【问题标题】:How to get the repeater-item in a Checkbox' CheckedChanged-event?如何在复选框的 CheckedChanged 事件中获取中继器项目?
【发布时间】:2014-10-08 02:47:48
【问题描述】:

我在Repeater 中有一个CheckBox。像这样:

<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,我想在后面的代码中获得Label lblCampCodeText

有可能吗?

我已经设法写了这么多代码。

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
}

【问题讨论】:

    标签: asp.net checkbox repeater


    【解决方案1】:

    所以你想得到RepeaterItem?您可以通过转换CheckBox(发件人参数)的NamingContainer 来做到这一点。然后你就快到了,你需要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-approaches 有很大的优势,即使您添加其他容器控件(如PanelTable),它也可以工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多