Avatar billede ncp Nybegynder
12. oktober 2006 - 11:11 Der er 5 kommentarer og
1 løsning

Brug Eval til at sætte Class

Hej, prøvet at printe en menu ud med følgende kode:

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="False" />
<ul>         
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SiteMapDataSource1">
  <ItemTemplate><li><% if (Request.Url.PathAndQuery.StartsWith((string)Eval("url"))) { %><a href="<%#Eval("url")%>" class="active"><%#Eval("title")%></a><% } else { %><a href="<%#Eval("url")%>"><%#Eval("title")%></a><% } %></li></ItemTemplate>
</asp:Repeater>
</ul>

Men får fejl i min if sætning:
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

Hvordan løser jeg dette smartest?
Avatar billede snepnet Nybegynder
12. oktober 2006 - 11:56 #1
F.eks.
<asp:HyperLink id="hl" NavigateUrl = '<%# Eval("url") %>' />
Mvh
Avatar billede ncp Nybegynder
12. oktober 2006 - 12:10 #2
Hvordan sætter jeg så classen udfra om url er den side som bruger ser nu?
Avatar billede snepnet Nybegynder
12. oktober 2006 - 12:27 #3
Som udgangspunkt synes jeg ikke du skal have kode som den du viser liggende flettet ind i din repeater på den måde.

Du kan gøre det at du abbonnere på det event der hedder ItemDataBound på repeateren, og der skrive i ren C# hvad der skal ske.

<asp:Repeater ID="someRepeater" runat="server" OnItemDataBound="someRepeater_ItemDataBound" >
    <ItemTemplate>
        <asp:HyperLink CssClass="defaultStyle" NavigateUrl='<%# Eval("Url") %>'></asp:HyperLink>
    </ItemTemplate>           
</asp:Repeater>

Og så handleren til databound eventet:

protected void someRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType = ListItemType.Item || e.Item.ItemType = ListItemType.AlternatingItem)
    {
        HyperLink hl = e.Item.FindControl("link") as HyperLink;
        hl.CssClass = "active";
    }
}

Kan du ikke bruge hverken menukontrollen eller et treeview til noget?

Mvh
Avatar billede snepnet Nybegynder
12. oktober 2006 - 12:28 #4
Der skal også lige en runat="server" på det hyperlink jeg har sat i repeateren :o)
Mvh
Avatar billede ncp Nybegynder
12. oktober 2006 - 13:00 #5
super - var lige det jeg manglede :) smid et svar!
Avatar billede snepnet Nybegynder
12. oktober 2006 - 14:19 #6
Kommer her :o)
Mvh
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