Lets assume I have objects defined like this:
Public Class A
Public Property details as List(of B)
End Class
Public Class B : Implements ISomeInterface
Public Property Y Implements ISomeInterface.Y
Public Property X
It seems that the only fields that I can display on the grid on child band(details) are the ones from ISomeInterface. ie, property X will not display. If I look at 'details' properties at run-time(grd.rows.bands(0).list.details(0), it shows it as a type of ISomeInterface. Is there a way to force the type of these items to be of type B within the grid?
So, have you resolved the issue you were having? Is there anything more we can help you with?
Michael S.
I've updated my thread with a solution for the code I've fixed. Feel free the head on over there!
This is nothing to do with the grid specifically. The BindingManager in DotNet returns the structure of the data using the type of the list. It will not return properties exposed by derived types or concrete types that implement an interface.
You will see the same behavior binding to any control, such as the MS DataGridView.
I'm noticing a similar problem in my own code. I've documented it here in this thread so far:
http://forums.infragistics.com/forums/t/54354.aspx
If you happen to get a solution would you be so kind as to let me know?
I was hoping there might be a method I can override so I can upcast each band as they come through, therein allowing their properties to visible.
Alternatively I considered using property descriptors. (Assuming the UltraGrid is using reflections to fetch properties through binding lists.)
I was wrong about the 'details' properties, they actually show as type 'B', but the only properties I columns that will display are from ISomeInterface