It’s a pleasure to see how much knowledge people have on here, it’s a treasure of a place.
I’ve seen myself writing code for DataGridView events – and using DataSource to a backend prepared DataTable object.
Sometimes the user can remove rows, update them etc. and the underlying data will need validation checks again.
Let’s assume we have a person class
class Person {
public string FirstName { get; set; }
}
Let’s say some other part of the code deals with creating an array of Person.
class Processor {
public static Person[] Create()
{
....
....
return person[];
}
}
And this information would appear on a DataGridView for user viewing.
I’ve tried something like this:
public static DataTable ToTable(List<Person> list)
{ ... }
And had this method in the Person class .. which I would think it’d belong to. Then I would bind the DataGridView to that DataTable and the user will then see that data and do their tasks.
But I’ve thought of using BindingList<> which I’m not so educated on yet.. would I still have the same capability of sorting the DataGridView like it does with DataTable as a DataSource? Would BindingList be implemented by a container class like “PersonCollection” or would the Person class implement itself? I would like to fire some events to be able to modify the collection in a clean way without having to reset datasources, etc. Where the user experience could really be affected.
I understand that modifying the DataSource DataTable is the good way. But sometimes I need to fire methods in the corresponding class that that specific row refers to, and had an ugly extra hidden column which would hold a reference to the existing object somewhere else (the Person reference).
If you guys know a better design solution, I would be more than happy to hear it.
Thanks in advance,
PS. After reading “The Pragmatic Programmer”, I just can’t stop thinking critically about code!
Leo B.
Create a business object class. Implement INotifyPropertyChanged. Look at the code below:
Create your custom collection:
Set the data source:
Now if you want to add an employee to your datagridview,
This is very clean. You just play with business object and don’t touch the UI.