We use infragistics controls and they work. However we don't bind directly to the ultra controls, we use the BindingSource objects available in .Net 2.0 for binding.
So, assuming you drag a BindingSource on your design surface, you point the UltraGrid's DataSource to the BindingSource, and then set the TList<> to the BindingSource's DataSource.
In order to get Infragistics to generate columns based on your type, while in design mode, you can set the DataSource of the BindingSource to the type of the object you're going to bind to.
A lot of this should be done by/through the designer, but I'm going to code a rough sketch for you:
BindingSource tableBindingSource = new BindingSource();
tableBindingSource.DataSource = typeof(Table);
Ultragrid1.DataSource = tableBindingSource;
Then whenever you get your actual data, u just set the BidindingSource's DataSource as follows:
tableBindingSource.DataSource = new TableService().GetAll();
"Small is the number of them that see with their own eyes, and feel with their own hearts" Albert Einstein