Hej! Checkboxen ligger inuti en RepeaterItem... Av den anledningen borde du kunna lägga in en hidden input i samma item och sedan från checkboxen ta fram parent och sedan leta fram hidden fältet. Känns som en jobbig väg runt, men det är rätt enkelt. Alternativet är att använda en datalist. Den kan spara nycklarna för det som itereras. Tror inte att repeatern kan det. På så vis skulle du bara kunna ta fram itemet som checkboxen ligger i och sedan säga typ dl.Keys[item.ItemIndex]. Hängde du med? Hinner tyvärr inte skapa kodexempel just nu... I klassisk ASP så kunde du ge checkboxen ett namn men olika värden, borde fungera även i .net. Hej Per Checkbox och Repeater
Jag har ett antal <asp:Checkbox i en Repeater-kontroll. Vet att det går att generera en händelse varje gång dess status (förbockad/ej förbockad) ändras. Problemet är att jag inte vet hur jag ska ta reda på vilken checkbox som markerades.
Anta att man har en repeater som innehåller information om produkter, när man klickar på en checkbox vill man ha ut produktnumret för den produkt som är associerad med checkboxen. Måste man bygga in produktnumret i checkboxens namn då, eller hur fungerar det?
mvh Per LjungSv: Checkbox och Repeater
Sv:Checkbox och Repeater
Sv: Checkbox och Repeater
Okej, kan tänka mig några olika sätt att lösa detta på. Till att börja med så kan jag tipas om att du måste sätt attributet autopostback till true på checkboxarna något man glömmer i bland :) Sen så kommer det roliga en enskild checkbox kan tyvärr enbart hålla ett eget värde i attributet text vilket innbär att detta kommer skrivas ut på sidan, tror du kan fixa bort det med css. Men du kan också anväda en checkboxlist så finns möjligheten att använda value attributet. Du kan sedan använda eventet OnCheckedChanged och knyta till en method där du kan anväda sender parametern i metoden för att se vilken kontroll som har triggat eventet. Du kan casta om sender objektet för "object" till "checkboxitem" så kommer du åt alla attribut som du vill kunna läsa av.
T.ex:
<asp:Repeater ID="rep1" runat="server">
<ItemTemplate>
<asp:CheckBox ID="cbx1" runat="server" AutoPostBack="true" OnCheckedChanged="cbx1_CheckedChanged" Text='<%# DataBinder.Eval(Container.DataItem, "userId")%>' />
</ItemTemplate>
</asp:Repeater>
c#:
protected void cbx1_CheckedChanged(object sender, EventArgs e)
{
Response.Write(((CheckBoxItem)sender).Text);
}
vb:
Protected Sub cbx1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Response.Write(DirectCast(sender, CheckBoxItem).Text)
End Sub