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

时间:2014-08-14 12:37:15

标签: 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>

当有人点击checkbox时,我想在我的代码中获取整行。因此,如果发生CheckedChanged,我想在后面的代码中获得Text Label的{​​{1}}。

有可能吗?

我设法写了这么多代码。

lblCampCode

1 个答案:

答案 0 :(得分:8)

所以你想获得RepeaterItem?您可以通过转换NamingContainer {sender}参数的CheckBox来实现。那么你几乎就在那里,你需要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
}

这比Parent.Parent更有优势 - 即使您添加其他容器控件(例如PanelTable),它也能正常工作。

顺便说一句,对于ASP.NET中的任何数据绑定Web控件(如GridView等),它的工作方式类似。