GridView og RowDataBind problemer

Tags:    .net

Jeg har et Gridview som jeg har database data liggende i. De bliver hentet med noget linq query og det virker fint.

Jeg har vedhæftet OnRowDataBound="Gridview_RowDataBind" på min Gridview 1 da jeg gerne vil have adgang til de enkelte rækker. Så har jeg lavet noget kode.
Fold kodeboks ind/udKode 


og fejlen jeg får er
Fold kodeboks ind/udKode 


Er der nogen der har en løsning på det?




Tror du skal passe på med hvad du binder til dit gridview, må vi se det kode hvor du assigner til gridview.Source

Det ser ud til at den ikke kan konvertere den dynamiske type dit LinQ genererer til en GridRow...



Okay,

Fold kodeboks ind/udKode 






Ok.

e.Row.DataItem <- Dette refererer til det objekt som bliver bundet til rækken, i dette tilfælde er det, det som kommer fra LINQ queryen:

Fold kodeboks ind/udKode 


Dette er et anonymt objekt - eller som CLR'en kalder den:

'<>f__AnonymousType0`5[System.String,System.String,System.Nullable`1[System.Int32],System.String,System.String]'

Dette kan ikke type castes til et DataRowView.

Spørgsmålet er selvfølgelig hvordan kan du så tilgå de enkelte properties og svaret er simpelt. Lav en ny klasse med alle de egenskaber du skal bruge:

Fold kodeboks ind/udKode 


(Det er meget muligt at jeg har formået at give dine egenskaber de forkerte typer, du må lige selv dobbelt chekke det.

I din LINQ query, i stedet for at lave et nyt anonymt objekt og select'e de, så selecter du i stedet et nyt "MinModel" objekt:

Fold kodeboks ind/udKode 


Og i stedet for at type caste til DataRowView, typecaster du til MinModel

Fold kodeboks ind/udKode 


Når du så skal bruge en egenskab fra drv skal du ikke bruge drv["egenskab"] men drv.egenskab.

Håber det hjælper.



t