I'm implementing a datagridview on a Windows (4.0) Forms application. The grid is binding to a bindinglist of a class instance whose properties are themselves class instances consisting of 1 property. I have implemented a CustomTypeDescriptor and overrided the GetProperties method as below:
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes) { try { PropertyDescriptorCollection cols = base.GetProperties(attributes); PropertyDescriptor[] array = new PropertyDescriptor[cols.Count]; for (int i = 0; i < cols.Count; i++ ) { PropertyDescriptorCollection PDC = cols[i].GetChildProperties(); array[i] = PDC[0]; } PropertyDescriptorCollection newcols = new PropertyDescriptorCollection(array); return newcols; } catch (Exception ex) { log.Error(ex); return null; } }
The datagridview is set to autogeneratecolumns. When I put a breakpoint on the above function and set the DataSource property of the grid - the collection seems to be populating correctly. The column headers are also populated across the top of the grid. The following exception message is then repeatedly displayed until I stop the program:
"System.Reflection.TargetInvocationException: Property Accessor <> on object <> threw the following exception: 'Object Does Not match target type.'
Apart from GetProperties - are there other methods I need to override in order for the datagridview to understand a hierarchical bindinglist?
Thanks Jim
Intermediate Google goodies trawler...