|
hmmm.
this would mean to build a graph of all points(nodes) in graphics rectangle? I dnon't think I got you right, because this would mean to connect all points on screen, which is awful lot. But you gave me good idea. Maybe I could hash allready calculated paths and just get the result next time same path will be calculated.
zilo
|
|
|
|
|
Awesome... Here's a link to a good article about using some .NET 3.5 stuff to cache results. I know you're using 2.0, but it's worth the read and it may give you more ideas. http://msdn2.microsoft.com/en-us/vcsharp/bb870976.aspx[^]
"Run for your life from any man who tells you that money is evil. That sentence is the leper's bell of an approaching looter." --Ayn Rand
|
|
|
|
|
Zilo(svk) wrote: I've created my own Point2D struct because accessing fields directly without Properties is much faster when considering a lot of iterations.
Are you sure? I belive JIT compiler does optimize it away, so you are only doing extra work...
Zilo(svk) wrote: I don't understand what's O(n2)
http://en.wikipedia.org/wiki/Big_O_notation[^]
Oversimplification: for N points, it will do N*N "operations".
[ My Blog] "Visual studio desperately needs some performance improvements. It is sometimes almost as slow as eclipse." - Rüdiger Klaehn "Real men use mspaint for writing code and notepad for designing graphics." - Anna-Jayne Metcalfe
|
|
|
|
|
Run this code
using System.Drawing;
using System.Diagnostics;
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
const int count = 100000000;
int x = 0;
Stopwatch watch = new Stopwatch();
Console.WriteLine("Starting Point iteration");
Point p = new Point(1, 1);
Point2D p2d = new Point2D(1, 1);
watch.Start();
for (int i = 0; i < count; i++)
{
x = p.X + p.Y;
}
watch.Stop();
Console.WriteLine("Point iteration took {0} mls\n\r", watch.ElapsedMilliseconds);
watch.Reset();
Console.WriteLine("Starting Point2D iteration");
watch.Start();
for (int i = 0; i < count; i++)
{
x = p2d.X + p2d.Y;
}
watch.Stop();
Console.WriteLine("Point2D iteration took {0} mls", watch.ElapsedMilliseconds);
Console.ReadKey();
}
struct Point2D
{
public int X, Y;
public Point2D(int x, int y)
{
this.X = x;
this.Y = y;
}
}
}
}
zilo
|
|
|
|
|
Right...
Debug, without optimalizations:
Starting Point iteration
Point iteration took 477 mls
Starting Point2D iteration
Point2D iteration took 263 mls
Release, with optimalizations on:
Starting Point iteration
Point iteration took 45 mls
Starting Point2D iteration
Point2D iteration took 43 mls
And same configuration, second run:
Starting Point iteration
Point iteration took 43 mls
Starting Point2D iteration
Point2D iteration took 43 mls
[ My Blog] "Visual studio desperately needs some performance improvements. It is sometimes almost as slow as eclipse." - Rüdiger Klaehn "Real men use mspaint for writing code and notepad for designing graphics." - Anna-Jayne Metcalfe
|
|
|
|
|
You're right, thank you.
zilo
|
|
|
|
|
I want to change this.Cursor = Cursor.SizeWE when user hover mouse over a DataGridView cell's border.
Could you help me ?
|
|
|
|
|
Private Sub dgvInvList_CellBorderStyleChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvInvList.CellMouseEnter
If e.ColumnIndex = dgvInvList.Columns("CName").Index Then
dgvInvList.Cursor = Cursors.Hand
End If
End Sub
Private Sub dgvInvList_CellBorderStyleChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvInvList.CellMouseLeave
If e.ColumnIndex = dgvInvList.Columns("CName").Index Then
dgvInvList.Cursor = Cursors.Default
End If
End Sub
The King is online
|
|
|
|
|
|
Drag and drop a GridView and name it as GridView1
Try the below code for merging the header
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable("Employee");
//Name Age Gender Mobile Phone Email
dt.Columns.Add("Name");
dt.Columns.Add("Age");
dt.Columns.Add("Gender");
dt.Columns.Add("Mobile");
dt.Columns.Add("Phone");
dt.Columns.Add("Email");
dt.Rows.Add("Anoop", "25", "Male", "996633352", "02255566", "anoopukrish@gmail.com");
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
GridView gridView = (GridView)sender;
GridViewRow gridViewRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);
TableCell tableCell = new TableCell();
//add Personal Info
tableCell.Text = "Personal Info";
tableCell.Attributes.Add("style", "text-align: center");
tableCell.ColumnSpan = 3;
gridViewRow.Cells.Add(tableCell);
//Add Contact Info
tableCell = new TableCell();
tableCell.Attributes.Add("style", "text-align: center");
tableCell.Text = "Contact Info";
tableCell.ColumnSpan = 3;
gridViewRow.Cells.Add(tableCell);
GridView1.Controls[0].Controls.AddAt(0, gridViewRow);
}
}
... There by u get the desired output...
|
|
|
|
|
Just a note:
The original question was how to merge a *DataGridView* Control.
The answer above appears to show how to merge a *GridView* Control.
The two controls are not the same.
|
|
|
|
|
Hi All,
I have a datatable with som rows. for example :
activity date time
a 01-01-07 12:00
b 01-01-08 13:00
c 01-01-07 12:00
As you can see, activity a and c have the same date and time. Now i have to filter those rows from the datatable and set them into a textbox. So how can i compare all rows with eachother and if they have the same date and time, then show them in a textbox????
Thanx.
|
|
|
|
|
In the RowCreated event of GridView match each row from datatable to that of the time in the new created row. if it matches show it in textbox else leave it as it is. Take care that the activity is not matching.
|
|
|
|
|
Hi Anoop,
Thanx for reply...wich gridview??? i don't use a gridview. it is a datatable from sqlserver table.
|
|
|
|
|
Hi,
Something like this might do it for ya...
DataRow[] _dataRow1;
DataRow[] _dataRow2;
foreach(DataRow dr1 in whateverYouCalledThis.Rows)
{
_dataRow1 = dsYourDataSet.Tables[0].Select(“date”);
foreach(DataRow dr2 in _dataRow)
{
_dataRow2 = dsYourDataSet.Tables[0].Select(“time”);
}
this.txtDate = _dataRow2[0]["date"].ToString();
this.txtTime = _dataRow2[0]["time"].ToString();
}
I'm sure there are better ways to do this
~j
|
|
|
|
|
How can I Disable users not to view the Source Code of Javascript using Internet Explorer ->View->Source at runtime?
|
|
|
|
|
I think We cant disable..
Rajendran.AL
|
|
|
|
|
Disabling the user from viewing your source? I don't know if that is possible by a remotest way. But, you can surely obfuscate your javascript. Look at the following URL:
http://www.javascriptobfuscator.com/[^]
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
oncontextmenu="return false">
The above statement can block the right clicks on the page. Then also the browser has options to view the source. So better try encrypt HTML.
|
|
|
|
|
Hi All,
I have a button on my screen that kicks off a long background worker, if the user clicks this button again is it best practice to:
a) inform them that the process is already running in the background
b) disable the button completely
c) just perform a check, if the background worker has started do nothing, if not kick it off ...
Cheers,
Jammer
Going where everyone here has gone before!
My Blog
|
|
|
|
|
Well I think that depends entirely on your application. b) is neat but a) is more informative for stupid users (they're all stupid unless proved otherwise). c) suggests that you don't care whether your users know whether its running or has run at all.
Don't think there's a best practice as such here.
Regards,
Rob Philpott.
|
|
|
|
|
|
Haha!
Indeed ... Your right, after I posted that I was thinking "hang on ... they all have merit ..."
There is loads of feedback in the interfact already showing them that stuff is happening like feeding a count to the interface a progress bar and another label showing them detailed info about what is being processed at any given time ... thing is at the moment they can still hit the button and kick off another background working that will basically just do the work again ...
hmm ... time to protect things methinks!
Jammer
Going where everyone here has gone before!
My Blog
|
|
|
|
|
Hi all
I have 2 classes
Public class DB
{
public dataset select(string Query,string tablename)
{
try
{
//Select logic
}
catch(Exception Ex)
{
throw Ex;
}
}
}
Public class InterActDB
{
public dataset selectQuery(string Query,string tablename)
{
try
{
DB obj = new DB();
obj.select(Query,tablename);
}
catch(Exception Ex)
{
throw ex;
}
}
}
from winform file i create object of InterActDB and anc call selectQuery, if any Exception occured in DB class that can not throw up to Winform try catch .
can somebody help me?
|
|
|
|
|
You will try this...
int result=0;
try
{
DB obj = new DB();
result=obj.select(Query,tablename);
}
catch(Exception ex)
{
throw new Exception(ex.Message);
}
return result;
Rajendran.AL
|
|
|
|