Avatar billede dgivoni Nybegynder
14. januar 2003 - 18:42 Der er 11 kommentarer og
1 løsning

Kategori/underkategori-visning - lidt starthjaelp

Jeg er forholdsvis ny indenfor ASP.NET og har brug for lidt starthjaelp.

Jeg oensker at lave en visning af en raekke kategorier med tilhoerende underkategorier a la ekspertens forside:

KATEGORI1                  KATEGORI3
underk1, underk2...        underk1, underk2, underk3

KATEGORI2                  KATEGORI4
underk1, underk2...        underk1, underk2, underk3

Jeg har ingen problemer med at lave det i normal ASP, men der maa vaere en smartere maade at gribe det an paa i .NET... En kontrol som kan tilpasses oder so...
Nogen idéer til hvordan det boer goeres, saa det virker og er paent?
Avatar billede a1a1 Novice
14. januar 2003 - 22:45 #1
jeg er ikke stødt på noget der gør det automatisk i .net....

men hvordan smarterer mener du?
Avatar billede dgivoni Nybegynder
15. januar 2003 - 00:19 #2
jeg taenkte at der maaske var en eller anden kontrol man kunne tage udgangspunkt i.
Og saa ville jeg gerne undgaa sammenblandningen af praesentationslogik og datalogik, og det kan jeg ikke helt se hvordan jeg skal undgaa, hvis jeg ikke kan bruge en kontrol.
hvordan ville du selv goere det, hvis du skulle? Du behoever ikke noedvendigvis poste kode, men bare lidt pseudokode eller en generel beskrivelse ville vaere dejligt...
Avatar billede odegaard Nybegynder
15. januar 2003 - 00:31 #3
Det der skal gøres smartere, er først og fremmest designet af din database.
Når du har gjort det, vil det sikkert være relevant med et ASP.NET spørgsmål, så du kan få vist dine kategorier på en nem .NET-måde.
Avatar billede dgivoni Nybegynder
15. januar 2003 - 01:28 #4
odegaard>> hvad mener du med det? Jeg har da overhovedet ikke skrevet noget om hvordan min database er designet?
men hvis det er relevant, saa har jeg én tabel m. tre felter: id, navn, og parentid.
Avatar billede odegaard Nybegynder
15. januar 2003 - 09:20 #5
Det er da meget relevant. Man er da nødt til at kende dit databasedesign, hvis man skal kunne hive det ud og præsentere det. Men forstår jeg det således, at hvis parentid er null, så har den ikke en parent ?

I så fald burde du måske kigge lidt på OnItemDataBound (og at kunne få underkategorier) og AlternateItem (for at få kolonne to). Alt dette kan du smide i en asp:repeater.
Avatar billede odegaard Nybegynder
15. januar 2003 - 09:21 #6
øh ikke "og at kunne få underkategorier" men "FOR at kunne få underkategorier" :)
Avatar billede dgivoni Nybegynder
15. januar 2003 - 11:18 #7
odegaard>> jeg er klar over at databasedesignet er vigtigt for at kunne hente de relevante data, men mit problem er primaert visningen af dem. (Og saa tolkede jeg din saetning "Det der skal gøres smartere..." som om at du troede at jeg havde beskrevet et databasedesign allerede, som du ikke broed dig om.)

ja, hvis parentid er null, saa er det en hovedkategori.

Under alle omstaendigheder saa ser repeater-kontrollen ud som om den er ligesaa top-down-liste baseret som datagrid og andre kontroller jeg har kigget paa.

Problemet er jo at jeg har en raekke kategorier som skal vises i nestede tabeller.

i html ville det vel se ca. saaledes ud:

<table>
  <tr>
    <td>
      <table>
        <tr>
            <td>
              Kategori1<br>
              underk1, underk2...
            </td>
        </tr>
        <tr>
            <td>
              Kategori2<br>
              underk1, underk2...
            </td>
        </tr>
      </table>
    </td>
    <td>
      <table>
        <tr>
            <td>
              Kategori3<br>
              underk1, underk2...
            </td>
        </tr>
        <tr>
            <td>
              Kategori4<br>
              underk1, underk2...
            </td>
        </tr>
      </table>
    </td>
  </tr>
</table>

Kan en asp:repeater-kontrol haandtere det?
Avatar billede burningice Nybegynder
15. januar 2003 - 13:04 #8
jeg ville ikke bruge repeater, men en datalist til det, da den har en option for mange mange kulonner det skal vises i... og ikke bare en lang række ned
Avatar billede odegaard Nybegynder
15. januar 2003 - 19:36 #9
Du må tænke på et datagrid. Her er der tale om én lang række ned.
Med repeateren er du meget mere fritstillet.
Jeg må indrømme at jeg faktisk aldrig har rodet med datalisten. Det må jeg da også snart lige få gjort.

Med to kolonner er det ihvertfald ret simpelt. Med flere er det en anelse mere kompliceret, da man her skal udnytte OnItemDataBound og modulus (men det virker nu fint!).

Sådan lige frit fra hånden kan de to kolonner klares med:

<asp:Repeater id="rep1" runat="server" OnItemDataBound="GetSubCategories">
  <HeaderTemplate>
      <table border=1>
  </HeaderTemplate>
  <ItemTemplate>
      <tr>
        <td><%# DataBinder.Eval(Container.DataItem, "OverKategori") %><br/>
            <asp:PlaceHolder id="UnderKategori" runat="server/>
  </ItemTemplate>
  <AlternatingItemTemplate>
        <td><%# DataBinder.Eval(Container.DataItem, "OverKategori") %><br/>
            <asp:PlaceHolder id="UnderKategori" runat="server/></td>
      </tr>
  </AlternatingItemTemplate>
  <FooterTemplate>
      </table>
  </FooterTemplate>
</asp:Repeater>
Avatar billede odegaard Nybegynder
15. januar 2003 - 19:37 #10
Forresten ville det jo nok være fiksere at erstatte placeholderen med endnu en repeater.
Avatar billede dgivoni Nybegynder
15. januar 2003 - 23:33 #11
tak for eksemplet odegaard. Jeg vil kigge lidt på det i de næste par dage og eksperimentere lidt frem.
Lige umiddelbart kan jeg ikke helt se, hvordan repeateren skulle kunne klare det, da problemet jo er, at der i første kolonne af den første tabel er en række kategorier og dernæst i anden kolonne er endnu en række kategorier. Sorteringen af kategorierne er ikke vandret, men lodret. Og jeg er nødt til at kunne definere hvor mange kategorier der er i hver kolonne lodret, for at den ved, hvornår den skal starte på næste kolonne. Men det kan jo være at der er en mulighed for at tilpasse det også...
Avatar billede dgivoni Nybegynder
31. marts 2003 - 14:34 #12
jeg kom vaek fra det her, men haaber at faa det testet paa et tidspunkt. Tak for hjaelpen...
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