Avatar billede lifo Nybegynder
25. august 2008 - 17:37 Der er 2 kommentarer og
1 løsning

Anonymous type og DataBinding

Hej


jeg binder en anonymus type til et ListView
og har problemer med at få fat i de data i ItemDataBound

var data = from d in db.MinTabel
          select new {col1,col2,col3};

mitListView.DataSource = data;
mitListView.DataBind();

alt fint der mend så skal jeg fange data i ItenDataBound
protected void MitListView_ItemDataBound(object sender, jaxControlToolkit.AccordionItemEventArgs e)
{
  e.Item  <- item er object ??
hvordan får jeg fat i dataene der ligger i e.Item
jeg kan jo ikke caste det til en anynomus type eller kan jeg ?
}


Det er ASP.NET vi snakker om
Avatar billede driis Nybegynder
25. august 2008 - 19:23 #1
Netop dér har du et problem, fordi du ikke kender typen. Typisk ville jeg nok erklære en klasse der indeholder de nødvendige data, så jeg kunne tilgå disse strongly typed. I reglen er anonyme typer kun tænkt til at blive brugt sparsomt i et enkelt scope; som f.eks. ved simple data binding scenarier og typisk ikke hvis man har brug for at anvende data på et senere tidspunkt.

Insisterer du på at anvende en anonym type, ville noget i retning af dette fungere; men jeg vil ikke anbefale det.

PropertyInfo p = e.Item.GetType().GetProperty("col1");
if ( p != null )
  object o = p.GetValue(e.Item); // Kender du typen kan du caste her.

Ovenstående udfra hukommelsen, sig til hvis du har problemer med det. Der er nogle performance hensyn at tage ved at bruge reflection på denne måde (at cache p ville være en god idé, hvis kodestumpen køres ofte).
Avatar billede lifo Nybegynder
26. august 2008 - 11:35 #2
ok jeg går tilbage til at bruge en DataRow
smid et svar
Avatar billede driis Nybegynder
26. august 2008 - 18:15 #3
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester