Toon posts:

[ASP.NET] van een Datalist een menu maken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo Tweakers,

mijn doel is om een menu te genereren met een aantal records uit een database. In dit geval doe ik dit door middel van de ASP.NET Datalist control (in VisualStudio.NET)

Uit de tabel 'subcategories' moeten bepaalde velden als menu-items worden weergegeven.

wat je standaard krijgt bij een Datalist (na wat simpele aanpassingen):

code:
1
2
3
4
5
6
7
<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
                    <ItemTemplate>
                        <asp:Label ID="SubCatNameLabel" runat="server" Text='<%# Eval("SubCatName") %>'>
                        </asp:Label>
                        <br />
                    </ItemTemplate>
                </asp:DataList>


De output komt nu keurig onder elkaar te staan. Het enige wat nu ontbreekt is de hyperlink. (Anders is het natuurlijk geen menu hè)

ik heb het als volgt geprobeerd:

code:
1
2
3
4
5
6
7
8
9
  <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
                    <ItemTemplate>
                        <asp:Label ID="SubCatNameLabel" runat="server">
                        </asp:Label>
                        <asp:HyperLink ID="SubCatHyperlink" runat="server" text='<%# Eval("SubCatName") %>' NavigateUrl="Geluid.aspx?products=doelvandelink">
                        </asp:HyperLink>
                        <br />
                    </ItemTemplate>
           </asp:DataList>


ik heb zoals je ziet een <asp:Hyperlink > toegevoegd. Wat ik verder doe is de texteigenschap van het label leeglaten en die daarvoor in de plaats in de hyperlink text-tag plaatsen.

Dit pikt ie niet: "The server tag is not well formed" is de error.


Wellicht dat mijn beoogde manier te simpel is. Feit is wel dat de voorbeelden die ik op het net tegenkom wel 10 x zo complex zijn. Mijn vraag is dan ook; wat doe ik verkeerd en hoe maak ik dit tot een simpele weergave van een Datalist met gelinkte items?

Alvast bedankt!


dit is overigens mijn code richting de DB:

code:
1
2
3
4
5
6
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:discoparadijsConnectionString1 %>"
                    SelectCommand="SELECT [SubCatName] FROM [SubCategories] WHERE ([CatID] = @CatID)">
                    <SelectParameters>
                        <asp:Parameter DefaultValue="1" Name="CatID" Type="String" />
                    </SelectParameters>
                </asp:SqlDataSource>

[ Voor 12% gewijzigd door Verwijderd op 17-01-2006 12:15 ]


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Verwijderd schreef op dinsdag 17 januari 2006 @ 11:56:

ik heb het als volgt geprobeerd:

code:
1
2
3
4
5
6
7
8
  <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
                    <ItemTemplate>
                        <asp:Label ID="SubCatNameLabel" runat="server">
                        </asp:Label>
                        <asp:HyperLink ID="SubCatHyperlink" runat="server" text='<%# Eval("SubCatName") %>' NavigateUrl="Geluid.aspx?products=doelvandelink">
                        </asp:HyperLink>
                        <br />
                    </ItemTemplate>


ik heb zoals je ziet een <asp:Hyperlink > toegevoegd. Wat ik verder doe is de texteigenschap van het label leeglaten en die daarvoor in de plaats in de hyperlink text-tag plaatsen.

Dit pikt ie niet: "The server tag is not well formed" is de error.
Heb je de code wat te snel gekopieerd of ontbreekt bij jou ook de sluit-tag van de datalist? Want dat is het enige wat ik er fout aan zie. Heb deze code zelf geprobeerd en met sluit-tag erbij doet ie het perfect.
Levert natuurlijk geen output op omdat ik je databron niet heb, maar het compileert.

[edit]
Heb er even gauw een arraylistje met een custom class met alleen een SubCatName property tegenaan gegooid, en dat doet dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
         <table id="DataList1" cellspacing="0" border="0" style="border-collapse:collapse;">
    <tr>
        <td>
                <span id="DataList1_ctl00_SubCatNameLabel"></span>
                <a id="DataList1_ctl00_SubCatHyperlink" href="Geluid.aspx?products=doelvandelink">Een</a>
                <br />
            </td>
    </tr><tr>

        <td>
                <span id="DataList1_ctl01_SubCatNameLabel"></span>
                <a id="DataList1_ctl01_SubCatHyperlink" href="Geluid.aspx?products=doelvandelink">Twee</a>
                <br />
            </td>
    </tr><tr>
        <td>
                <span id="DataList1_ctl02_SubCatNameLabel"></span>

                <a id="DataList1_ctl02_SubCatHyperlink" href="Geluid.aspx?products=doelvandelink">Drie</a>
                <br />
            </td>
    </tr>
</table>


Kijk ook eens naar de RepeatLayout property van de DataList. Standaard rendert de DataList als een tabel, maar je kunt hem ook in een flexibelere div-structuur laten renderen. Is misschien interessant voor jouw toepassing ervan.

code:
1
<asp:DataList ID="DataList1" RepeatLayout="Flow" runat="server" />

[ Voor 40% gewijzigd door Not Pingu op 17-01-2006 12:20 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


Verwijderd

Topicstarter
Ik was inderdaad iets te slordig met kopiëren. Bericht is aangepast.

Dat is vreemd, bij mij geeft ie toch echt die error in Visual Studio (Dus niet bij het draaien van de pagina, maar direct als ik op F5 druk krijg ik dat in een pop-upje).

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Op welke regel geeft ie aan dat die error plaatsvindt? Het lijkt iig op een Visual Studio-only probleem maar ik neem aan dat je wel graag wilt debuggen :)

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 05-04 18:13
edit:

Was al gezegd

[ Voor 92% gewijzigd door Mastermind op 17-01-2006 12:49 ]


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Mastermind schreef op dinsdag 17 januari 2006 @ 12:43:
Doe eens zo?
C#:
1
2
3
4
5
6
<asp:DataList id="DataList1" runat="server">
                            <ItemTemplate>
                                <asp:Label id="Label1" runat="server">Label</asp:Label>
                                <asp:HyperLink id="HyperLink1" runat="server" NavigateUrl="http://www.tweakers.net">TargetURL</asp:HyperLink>
                            </ItemTemplate>
                        </asp:DataList>
Zal geen verschil maken, een verwijzing naar een lokale url is net zo geldig als input als een FQDN.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Folkert
  • Registratie: September 2001
  • Laatst online: 17-04 11:43
Persoonlijk zou ik bij een dergelijk menu kiezen voor een repeater. En die </br> kan je ook in een seperator template stoppen. Hierdoor zal je onderaan je menu geen </br> tegenkomen.

[ Voor 8% gewijzigd door Folkert op 18-01-2006 12:50 ]

Pagina: 1