In einem Projekt benutze ich das Microsoft Entity Framework um Daten aus der Datenbank an ein Gridview zu binden.
Nun will ich aber zeilenweise bestimmte Zellen ausblenden, wenn das Datenobjekt z.B. bestimmte Arten von Eigenschaften/Kindern hat.
Um im RowDataBound Handler des Gridview aber das jewilige Entity zu bekommen, benötigt man eine kleine Hilfsfunktion:
Public Function GetRowItem(Of TEntity As Class)(ByVal dataItem As Object) As TEntity Dim Entity = TryCast(dataItem, TEntity) If Entity IsNot Nothing Then Return Entity Dim td = TryCast(dataItem, ComponentModel.ICustomTypeDescriptor) If td IsNot Nothing Then Return DirectCast(td.GetPropertyOwner(Nothing), TEntity) Return NothingEnd Function
Danach kann man dann in der RowDataBound folgenden Code benutzen, um die Entität (in meinem Fall fom Typ "Attribute”) zu bekommen:
Private Sub gvAttribs_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvAttribs.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim Attrib = GetRowItem(Of Attribute)(e.Row.DataItem) '-- Und hier gehts dann weiter ... End IfEnd Sub
Ich habe diesen Hinweis im MSDN Social gefunden.
d5922ab8-f07b-4e97-9fbd-d5758bf3a8cc|0|.0