在另一个按钮单击事件中找到转发器内的CheckBox

时间:2014-03-13 12:37:29

标签: c# asp.net repeater

我有两个嵌套的转发器和一个内部的复选框,就像这样

<asp:Repeater ID="rptInterestCategory" runat="server" OnItemDataBound="rptInterestCategory_ItemDataBound">
        <ItemTemplate>
            <asp:Repeater ID="rptInterests" runat="server" OnItemDataBound="rptInterests_ItemDataBound">
                <ItemTemplate>
                    <asp:CheckBox ID="cbInterest" runat="server" OnCheckedChanged="cbInterest_CheckedChanged" Data-Id='<%# DataBinder.Eval(Container.DataItem, "id") %>' Text='<%# DataBinder.Eval(Container.DataItem, "name") %>' />

                </ItemTemplate>
            </asp:Repeater>
            <hr/>
        </ItemTemplate>
    </asp:Repeater>

现在,在另一个按钮点击事件中,我想查找所有复选框(cbInterest),并且需要获取其中的值。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

循环使用它们的方法是首先获得对嵌套Repeater的引用:

Repeater rptInterests = (Repeater)rptInterestCategory.FindControl("rptInterests");

然后你可以遍历数据项,找到复选框,并获取CheckBox的值:

foreach (RepeaterItem item in rptInterests.Items)
{
    CheckBox cbInterest = (CheckBox)item.FindControl("cbInterest");
    bool isChecked = cbInterest.Checked;
}