|
IMHO, presenting the data to the user is job of the front end code. Thus, the layout should be done by the application. So, you should get the data from the database and then change it the way you like for display.
This does not mean that you should get each and every thing from the database. Just get the relevant data from the database and format it the way you like.
"The worst code you'll come across is code you wrote last year.", wizardzz[ ^]
|
|
|
|
|
Thanks, d@nish. I understand what you are saying. I guess I could have clarified that I was uncertain about how to retrieve the data (efficiently) from SQL Server, not about how to present the data. But I think I have figure it out now.
djj55: Nice but may have a permission problem
Pete O'Hanlon: He has my permission to run it.
|
|
|
|
|
You can use DataReader since that is faster than DataSet. You can make use of SQL Profile and Database Tuning Advisor to improve the query performance. Checking the execution plan would help as well.
"The worst code you'll come across is code you wrote last year.", wizardzz[ ^]
|
|
|
|
|
If these numbers are going to remain the order of magnitude in question, yes, load the whole thing into memory and do whatever analysis you want in code. I agree with D@nish that it belongs there in principle, and with only a few hundred rows, performance shouldn't be a consideration.
|
|
|
|
|
Okay, thanks. I implemented it this way, loading the data into memory and then manipulating the data from there. It is quite fast -- and definitely quick enough for the purpose of the report. However, I have several thousand rows, not just hundreds.
djj55: Nice but may have a permission problem
Pete O'Hanlon: He has my permission to run it.
|
|
|
|
|
Linq to Sql support the group by clause which might be helpful to you.
|
|
|
|
|
i have tried
Guid.NewGuid().ToString().GetHashCode().ToString("x").ToUpper();
but I do not get Unique Codes after 10,000 tries
i need to add ABCDEFGHIJKLMNOPQRSTUVWXYZ and 1234567890
somebody help!!!
|
|
|
|
|
How many characters do you need? There are a number of random password generators available, have you looked? One of those should be sufficient.
No comment
|
|
|
|
|
GUIDs are unique (before you mess about with hashcodes and stuff). What is your requirement and why can't you use those?
|
|
|
|
|
GUIDs are large enough that they'll usually be unique (But not guaranteed)... But once you take the hash code, you're dropping from a 16-byte GUID to a 4-byte integer, and limiting it even more by the hashing algorithm...
So why not build your own algorithm? If you just need them to be unique, you can start from "AAAA" (Or whatever length) and just increase as if it was a number... AAAA, AAAB, AAAC, ..., AAAZ, AAA0, AAA1, and so on.
If you want them to look random and be unpredictable, just generate a number of random integers from 0 to 36, and convert each one to a letter or digit... String them together, and you've got a random ID... Then just keep a hash/dictionary of previous IDs to compare against, and re-generate if you create a duplicate.
|
|
|
|
|
Guid should already satisfy your requirement in creating unique identifiers. They're already a product of cryptographic hashing functions, so you shouldn't need to hash them again. You can use ToString with a format provider to get a string representation of the value without the dashes.
Or, as an alternative, you can always roll your own UUID implementation according to the standards.
One other note - GetHashCode isn't a cryptographic hash, nor is it guaranteed to be consistent between frameworks or platforms. Check the Remarks section at MSDN.
|
|
|
|
|
How do I add row data directly to a DataGrid Class?
I am using a free opensource class from a company that I will not name (even if it is RadiantQ) that I like a lot. It has this cool MuttiColumnTreeList control that is a combination of a tree control and a datagrid. It comes with an example code that you can look at and everything. It is pretty cool. It is inherited from the DataGrid class.
The problem is that I am kind of new to databinding on this level and so I would like to just go ahead and write some code that forces the data that I have gathered from another class into the control.
So I looked online for how to do that for a DataGrid class and the information is not easily available. Can anyone help?
|
|
|
|
|
Which DataGrid? Are you talking about the XAML based version? If so, please take your questions to the Silverlight/WPF forum as they are more appropriate there.
|
|
|
|
|
It seems that once the databinding is done, and if you change the data you have to rebind to the control. This is what was giving me difficulty before. So what I have to do is run some command like this:
this.mutlicoolgridview.ItemsSource = null;
this.mutlicoolgridview.ItemsSource = SampleData.GetSampleDataNew();
The problem I am having now is this. After running his command about one thousand times, I actually run out of memory. I think that doing this:
this.mutlicoolgridview.ItemsSource = null;
is not such a good idea. Is there a better command to do to free up the memory?
|
|
|
|
|
Xarzu wrote: It seems that once the databinding is done, and if you change the data you have
to rebind to the control.
No you don't. You're doing it wrong. With XAML binding, you bind to a collection that implements ICollectionChanged (such as an ObservableCollection ), then you update the original collection - you don't create a new one, you don't rebind to it.
|
|
|
|
|
Thank you, Pete. I will change and test my code. Is there some way I can force a ICollectionChanged message?
|
|
|
|
|
If you're using an ObservableCollection , you don't have to. It raises the CollectionChanged events for you when you add or remove items.
|
|
|
|
|
Well first Which Datagrid are you referring to?
you can try this in the "Click Event" for your binding.
//Note this Will work if you are using Microsoft Enterprise Library
//else, look at the Code and try to Convert it to one Using ADO
//new DAL
SUNIG dal = new SUNIG();
string msg = "";
//declare a new dataset
DataSet ds = new DataSet();
//pass the data to to the dal, and fetch the data you want to Bind to the Grid.
/*Note: your Stored Procedure Must have to Fetch all the Data from the Table you want to Bind with/without a criteria
eg:
ds = dal.fetchYOURDATA(ref msg);
// do your Validation and Exception CHecking
//eg
if (msg != "")
{
MessageBox.Show("Put your Exception Message Here" + msg);
return
}
//do your databinding here
DataGridView1.Dataset = ds;
DataGridview1.DataBind();
Hope it Helps!!
|
|
|
|
|
It seems that once the databinding is done, and if you change the data you have to rebind to the control. This is what was giving me difficulty before. So what I have to do is run some command like this:
this.mutlicoolgridview.ItemsSource = null;
this.mutlicoolgridview.ItemsSource = SampleData.GetSampleDataNew();
The problem I am having now is this. After running his command about one thousand times, I actually run out of memory. I think that doing this:
this.mutlicoolgridview.ItemsSource = null;
is not such a good idea. Is there a better command to do to free up the memory?
|
|
|
|
|
Roller
I am looking for a good example of a percentage roller in Silverlight. (someone told me that they were called rollers)
The little default BusyIndicator is nice but I have a lot going on in the backgroud for a particular app and because of this, I want one of those rollers that give a percentage of how much time the use can expect to wait. I already have a way of determining what sort of percentage is going on. In other words, I know what sort of data to send the roller. Can anyone help me?
|
|
|
|
|
No idea in Silverlight - but what you're looking for is called a Progress Bar.
|
|
|
|
|
Perhaps you should ask this in the Silverlight forum.
|
|
|
|
|
Please describe what you mean by a 'roller', as it's not a term I'm familiar with, and I guess it isn't just a progress bar since you would already have found that.
|
|
|
|
|
A Roller is what I was told was that little animation that is played when a page loads and it takes a while to complete. Some of the cool flash or silverlight ones have a percentage.
|
|
|
|
|
Okay, that's what I thought you meant, but I wasn't sure.
According to this article[^], you can overwrite the template and put whatever you want in there, including a progress bar with a percentage (and a data binding). If you don't remove the default progress bar (as that article does), you can probably overlay it quite easily.
I haven't actually used this control though.
|
|
|
|