Hej Hej Magnus, Okej, har kollat runt lite nu. Jag tänkte bara ge en liten annan approach som kanske kan lösa det här. Om det gäller att du ska visa eller dölja lablarna beroende på om du är inloggad eller inte så har jag gjort så här i vissa lägen. Jag hade nog löst det som Martin. label i repeater
Jag har en repeater, sedan i repeatern har jag ett label som har som funktion att dölja några länkar.
<code>
if(Session["Inloggad"] == "Ja")
{
lblAdmin.Visible = true;
}
else
{
lblAdmin.Visible = false;
}
</code>
När jag ska testa sidan så får jag ett meddelande att lblAdmin inte finns, men om man lägger den utanför repeatern så finns den. Döps lablet om i repeatern, och hur kan man lösa det? Sv: label i repeater
Antagligen med FindControl, testa att söka på FindControl i forumet eller på någon .net-site (kanske t.o.m. googla)
/mSv:label i repeater
Jag har nu sökt men jag förstod det inte så bra, om nån kan tillrätta säga vad jag har gjort fel i min kod :)
<code>
public void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (Session["Inloggad"] == "Ja")
{
Label lblEditera, lblTabort;
string Id;
Id = e.Item.DataItem("ID");
lblEditera.Text = "Editera";
lblTabort.Text = "Radera";
}
}
</code>
Får det här felmeddelandet:
System.Web.UI.WebControls.RepeaterItem.DataItem' denotes a 'property' where a 'method' was expectedSv: label i repeater
Label i repeatern:
<asp:label runat="server" id="lblAdmin" Visible='<%# GetVisibility() %>' />
I CodeBehind har jag sen en funktion som ser ut nåt i den här stilen (med reservation för felskrivningar):
Protected function GetVisibility() as String
if Session("Inloggad") = "Ja" then
return "true"
else
return "false"
end if
end function
Ledsen för att jag inte skrivit om den till C# men jag hoppas det verkar förståeligt ändå, hoppas dessutom att det här ska funka i C# också men det kan väl inte gärna vara nåt VB-unikt?!
Kanske inte det smartaste ur prestandasynpunkt men relativt enkelt att implementera.Sv:label i repeater
Men vill du få din lösning att fungera måste du göra två saker.
1) Id = e.Item.DataItem("ID"); Funkar inte eftersom du försöker accessa indexeraren med fel syntax. Du måste använda [] i C#.
2) Dina lbl måste hämtas. Det gör du så här:
Label lblAdmin = (Label)e.Item.FindControl("lblAdmin");