Någon som vet hur man enligt koden nedan får tag på värdet från repeter1(node1) i repeater2(node2)? Finns flera sätt. Men ett skulle vara att spara undan värdet i en global variabel i ItemDataBound på node1 och sedan i ItemDataBound eventet på node 2 använda den globala variabeln... Tack för svaret Chris... Efter ett snabbt test så bör det här funka: Härligt chris, fungerar detta så får du en stjärna i himmelen :) Ska testa det ikväll...Tack för hjälpen. hmm, stjärnan får du i vilket fall, men det fungerade tyvärr inte. Hittade på en artikel om just detta, och jag har gjort precis som i artikeln, men det fungerar fortfarande inte. Blir samma fel som på din idé, så resultatet blir säker lika, när det väl fungerar. Finally found it. Så här ser den ut nu......och fungerar. Som du ser i ett av mina tidigare inlägg, så fungerade inte din lösning....fick nåt expression fel. Kan det vara Ctype() som saknades? Ingen aning. Det skumma var att jag kunde köra det i min VS. CType låter VB...Jag kör C#... Kan vara därför... ok, en annan fundering när vi ändå är inne i repeater-djungeln och snurrar. Ett alternativ skulle väl vara att ha en string property som innehåller namnet på den property som skall visas och sen använda den propertyn i din Eval...typ Kan tyvärr inte VB.NET...sorry. Men skapa en text-property som returnerar namnet på den kolumn du vill visa upp. Alternativt byter du till C# så kan jag hjälpa till mer...=)Nestlade Repeaters
jag vill alltså skicka med ett värde från repeater 1 i querystringen som skapas i repeater2.
<code>
<asp:Repeater ID="node1" runat="server">
<ItemTemplate>
<li><a class="menuclick" onclick="this.blur()"><%#DataBinder.Eval(Container.DataItem, "menuName")%></a></li>
<ul class="menutoggled">
<asp:Repeater ID="node2" runat="server" DataSource='<%# Ctype(Container.Dataitem, DataRowView).Row.GetChildRows("menuRelation")%>'>
<ItemTemplate>
<li>&r=<%#DataBinder.Eval(Container.DataItem, "(menuName)")%>&s="><%#DataBinder.Eval(Container.DataItem, "(menuName)")%></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater>
</code>Sv: Nestlade Repeaters
Eller så kan du kanske använda node2.Parent. Den propertyn ger dig referens till node2:s parent, dvs node1:s item...Sv:Nestlade Repeaters
ja, så längt är jag med, iaf gällande FindControl.Parent....men jag kan bara inte komma på hur jag ska ställa upp det....jag har provat massor med alternativ, men det blir inte rätt. Troligen så invecklar jag det alldeles för mycket. Det ska väl kunna gå att hämta det direkt i presentationslagret, typ
<code>
<%#DataBinder.Eval("")&>
</code>Sv: Nestlade Repeaters
<code>
<%# Eval(((RepeaterItem)Container.Parent.Parent).DataItem,"Property") #>
</code>
Container.Parent ger dig repeatern, dvs Itemets parent
Container.Parent.Parent get repeaterns parent vilket innebär itemet i den första repeatern
För att komma åt DataItem på den första RepeaterItem måste man casta till RepeaterItem. Därefter kan du köra Eval()Sv:Nestlade Repeaters
Sv:Nestlade Repeaters
Jag får fel i VS på dels RepeaterItem = "RepeaterItem is a type and cannot be used as an expression"
sen även på Container = " ')' expected" Sv: Nestlade Repeaters
http://www.schisani.com/ProgrammingRecipes/AspNet/NestedRepeatersAspNet/
<code>
<%#DataBinder.Eval(((System.Web.UI.WebControls.RepeaterItem)Container.Parent.Parent).DataItem, "menuName")%>
</code>Sv:Nestlade Repeaters
<code>
<%#DataBinder.Eval(CType((Container.Parent.Parent), System.Web.UI.WebControls.RepeaterItem).DataItem, "menuName")%>
</code>Sv:Nestlade Repeaters
Sv: Nestlade Repeaters
Sv:Nestlade Repeaters
Jag kör en databind från codebehind, och hämtar som bekant värden i presentationen genom vanliga
<code>
<%#Eval("Värde")%>
</code>
Hur gör jag om jag vill kunna visa olika värden från databasen i repeatern beroende på ett sessionID?
Jag vill kunna göra detta i page_load från codebehind, så man slipper massa fulkod i presentationen..Sv: Nestlade Repeaters
Codebehind
string _columnName = "MyColumn"; // Kan sättas beroende på sessionid
protected string PropertyToShow
{
get { return _columnName; }
}
Markup
<code>
<%# DataBinder.Eval(Container.DataItem,PropertyToShow) %>
</code>
Borde fungera...tror jag
Sv: Nestlade Repeaters