Avatar billede radiv Nybegynder
24. november 2004 - 14:34 Der er 3 kommentarer og
1 løsning

ItemDataBound og <ItemTemplate>

Jeg har et datagrid som jeg med ItemDataBound ændrer indholdet i de enkelte celler.

Med værdi fra en BoundColumn kan jeg godt gøre dette:

//skift talværdi ud med tekst
if (e.Item.Cells[3].Text != null)
  {
    //find ID
    int subKategoriType = int.Parse(e.Item.Cells[3].Text);
    //find teksten
    e.Item.Cells[3].Text = Data.subKategori.FindBysubKategoriID(subKategoriType).subKategoriNavn;
  }

Værdien i BoundColumn er sat med DataField = "subKategoriID"

I ItemColumn har jeg:
<ItemTemplate>
  <%# DataBinder.Eval(Container.DataItem, "kategoriID") %>
</ItemTemplate>

Hvordan kan jeg lave en tilsvarende if-sætning for kategori?

Det virker som om tekstværdien fra e.Item.Cells[2].Text bliver "". Hvorfor er den ikke et tal, som er det der bliver vist i mit datagrid?
Avatar billede jepsen999 Nybegynder
24. november 2004 - 18:38 #1
<%# DataBinder.Eval(Container.DataItem, "kategoriID") %>
indsættes som en control (DataBoundLiteralControl) og ikke som text.
For at tilgå teksten kan du skrive
DataBoundLiteralControl dbl = (DataBoundLiteralControl)e.Item.Cells[2].Controls[0];
Response.Write(dbl.Text);
Avatar billede radiv Nybegynder
25. november 2004 - 09:37 #2
Jeg kan ikke få en DataBoundLiteralControl til at kompilere, men løsningen fungerer med en Literal.

Hvor finder man en DataBoundLiteralControl? Jeg ser dens namespace, men kan ikke indsætte den fra Web Forms-panelet eller direkte i koden.
Avatar billede jepsen999 Nybegynder
25. november 2004 - 20:06 #3
Det er kun i codebehind-filen du skal caste til en DataBoundLiteralControl. ASP.NET tolker åbenbart <%# DataBinder.Eval(Container.DataItem, "kategoriID") %> som en DataBoundLiteralControl i din aspx fil, så du skal ikke indsætte controllen direkte.
Derfor findes den ikke i web forms-panelet.

Forstod jeg dit spørgsmål rigtigt, eller...?
Avatar billede radiv Nybegynder
25. november 2004 - 21:18 #4
Ja, rigtigt forstået.
Men jeg får altså en InvalidCastException hvis jeg forsøger med en DataBoundLiteralControl.
Så jeg holder mig til Literal, og den gør nøjagtigt det den skal!
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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