Avatar billede clausjul Nybegynder
21. maj 2003 - 08:28 Der er 3 kommentarer og
2 løsninger

Repeater med grupper

Jeg ønsker en liste sådan:

KATEGORI 1
- Element 1
- Element 2
- Element 3

KATEGORI 2
- Element 4
- Element 5
- Element 6

Feltet KATEGORI 1 og KATEGORI 2 kommer fra kategoritabellen som hentes ind i en dataadapter og databindes. Elementerne kommer fra en elementtabel og databindes også.

Skal det ikke være sådan:

<Asp:Repeater id="kategori" runat="server">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem,"kategori") %><br>

<Asp:Repeater id="elementer" runat="server">
<ItemTemplate>
- <%#DataBinder.Eval(Container.DataItem,"element") %><br>
</ItemTemplate>
</Asp:Repeater>

</ItemTemplate>
</Asp:Repeater>

Men den virker ikke - hvad gør jeg galt?
Avatar billede odegaard Nybegynder
21. maj 2003 - 08:49 #1
Du skal binde den indre repeater indefra OnItemDataBound eventet.
Den kan du ikke kalde udefra.
Avatar billede clausjul Nybegynder
21. maj 2003 - 09:13 #2
Jeg kan se at OnItemDataBound kan kalde en method i koden. Fint nok. Men det er lidt svært at overskue, hvordan man kan printe navnet på kategorien i netop kun det tilfælde, at den næste række har en ny kategori?
Avatar billede odegaard Nybegynder
21. maj 2003 - 20:37 #3
Prøv at kigge på mit eksempel her og se om det ikke hjælper.
http://www.eksperten.dk/spm/245879
Avatar billede clausjul Nybegynder
22. maj 2003 - 08:18 #4
Jeg fandt på simplere løsning:

<asp:repeater ID="rp" Runat="server">
<ItemTemplate>
<b><%# DataBinder.Eval(Container.DataItem,"kategori") %></b><br><br>

<asp:Repeater ID="category" Runat="server" DataSource='<%# GetCategory(DataBinder.Eval(Container.DataItem,"kategoriid").ToString()) %>'>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"overskrift") %><br>
</ItemTemplate>
</asp:Repeater>
<br>

</ItemTemplate>
</asp:repeater>

Den nested DataList kalder GetCategory(Catid) og der hentes der data, som hører til kategorien og returner som en DataSet:

public DataSet GetCategory(String categoryId)
{
    OdbcConnection myConn = DBTools.OpenConnection();
    OdbcDataAdapter da = DBTools.DataAdapterQuery("SELECT * FROM tblData10 WHERE kategori=" + categoryId,myConn);       
    DataSet ds = new DataSet();
    da.Fill(ds,"cat");
    return ds;
}

Men odegaard får 15 point for at lede mig på vej ;-)
Avatar billede odegaard Nybegynder
22. maj 2003 - 09:26 #5
Det var egentlig meget fikst. Det havde jeg slet ikke tænkt på.
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