|
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.
|
|
|
|
|
I'm making a website on job site.
Whenever I run the login form,I get an error:-
"An attempt to attach an auto-named database for file (C:\Users\ADMIN\Documents\Users.mdf) failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."
Now I get an error"Invalid attempt to read when no data is present."
Help me!!!
modified 4-Oct-11 4:51am.
|
|
|
|
|
Are you sure that your mdf file have permissions?
I appreciate your help all the time...
CodingLover
|
|
|
|
|
thnks!
The problem's solved!!!
|
|
|
|
|
Is that the mdf file doesn't have permissions?
I appreciate your help all the time...
CodingLover
|
|
|
|
|
No, there was a small error in the code!
|
|
|
|
|
Ok,that's fine them. In most of the cases that error comes when you don't have permissions on it.
I appreciate your help all the time...
CodingLover
|
|
|
|
|
I'm using BeginReceive to receive data on a Socket.
Sometimes the receive completes synchronously, as indicated by the IAsyncResult.CompletedSynchronously member.
The problem is: I don't know how to retrieve the number of bytes received in this case, because usually it is the EndReceive function that returns this information. But you're not allowed to call EndReceive when it completes synchronously, because it will throw an InvalidOperation exception.
Does anyone know how to retrieve the number of bytes received when the receive completes synchronously?
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
While I haven't read it in detail, I think this[^] not so simple thread holds the essentials.
|
|
|
|
|
Thanks, Luc. I read the thread, but there was no answer there.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|