.NET 2.0: DataGridView and DataSource

  • Hello everyone,

    I'm new to .NET and decided to give it a try for a small, non-critical app. Basically, it's a configuration dialog with several text fields which are hooked to a simple storage object via .NET's neat DataBinding mechanism like that:

    exampleTextBox.DataBindings.Add("Text", Config, "exampleProperty");

    The Config object is finally serialized to an XML file using the nifty XmlSerializer. Pretty cool stuff so far!
    Now I also need a DataGridView with two columns and a variable amount of rows (well, what else would you need DataGridView for, anyway). Obviously, hooking a DataGridView to a storage object isn't as trivial as it is with a text box. I realize there is a DataSource property which is supposed to be used for that matter, but still, I couldn't find a way to set it to e. g. an ArrayList containing structs with simple string members corresponding to the DataGridView's columns -- which is, of course, nothing to be surprised at: Why should the DataGridView know what kind of model I use to store its data?

    Since I noticed many .NET people are reading these forums, I was hoping someone could shed some light on this issue for me!


  • If you want to bind your DataGridView to a custom collection, you should inherit from CollectionBase.  I can't remember exactly what interfaces are needed for binding, but CollectionBase implements IList, ICollection, & IEnumerable.

    Here is an article I found that you might find useful http://www.ondotnet.com/pub/a/dotnet/2003/06/02/collectionbase.html

  • Thanks for your advice! I found inheriting from CollectionBase was too bothersome, so I discovered another way: Inheriting from BindingList, which is a bindable generic list -- bingo! Now I can use the visual designer to connect properties of my customly defined item classes to the columns of my DataGridView. Hooray!


Log in to reply

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.