如何在Checkbox的CheckedChanged事件中获取repeater-item?

Ath*_*hul 3 asp.net checkbox repeater

我有一个CheckBox内部Repeater.像这样:

<asp:Repeater ID="rptEvaluationInfo" runat="server">
    <ItemTemplate>
       <asp:Label runat="server" Id="lblCampCode" Text="<%#Eval("CampCode") %>"></asp:Label>
       <asp:CheckBox runat="server" ID="cbCoaching" value="coaching-required" ClientIDMode="AutoID" AutoPostBack="True" OnCheckedChanged="cbCoaching_OnCheckedChanged" />
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

当有人点击checkbox我想要在我的代码中获得整行时.因此,如果CheckedChanged发生了,我想获得TextLabel lblCampCode代码后面.

可能吗?

我设法写了这么多代码.

protected void cbCoaching_OnCheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = (CheckBox)sender;
    Repeater rpt = (Repeater)chk.Parent.Parent;
    string CampCode = "";//  here i want to get the value of CampCode in that row
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 8

所以你想得到RepeaterItem?你这样做,通过铸造NamingContainer的的CheckBox(sender参数).然后你几乎就在那里,你需要FindControl标签:

protected void cbCoaching_OnCheckedChanged(object sender, EventArgs e)
{
    CheckBox chk = (CheckBox)sender;
    RepeaterItem item = (RepeaterItem) chk.NamingContainer;
    Label lblCampCode = (Label) item.FindControl("lblCampCode");
    string CampCode = lblCampCode.Text;//  here i want to get the value of CampCode in that row
}
Run Code Online (Sandbox Code Playgroud)

这有很大的优势超过Parent.Parent-approaches,如果你添加像其他容器控件它的工作原理,甚至PanelTable.

顺便说一句,这对于ASP.NET中的任何数据绑定Web控件(如GridViewetc)都有类似的方式.