获取中继器内选中的复选框列表值

Get checked checkbox list values inside a repeater

如何从转发器中的复选框列表中获取选中的值,我不知道如何将所有选中的值收集到集合列表中。

<asp:Repeater runat="server" ID="rp_outer" OnItemDataBound="rp_outer_ItemDataBound">
                 <ItemTemplate>
                     <a class="collapsed btn" data-toggle="collapse" data-target="#Col<%#Eval("ProID") %>">  <%#Eval("PropEName") %></a>

                     <div id="Col<%#Eval("ProID") %>" class="collapse in">

                         <asp:CheckBoxList ID="cbxlist" runat="server" CssClass="filter-ul" DataSource='<%# DataBinder.Eval(Container.DataItem, "rltbls") %>' DataValueField='ID' DataTextField='ValuesEName'>

                         </asp:CheckBoxList>


                     </div>
                     <hr />


                 </ItemTemplate>
             </asp:Repeater>

您需要使用 ProId 对项目进行分组。

     <ItemTemplate>
           <a class="collapsed btn" data-toggle="collapse" data-target="#Col<%#Eval("ProID") %>">  <%#Eval("PropEName") %></a>
           <asp:HiddenField runat="server" ID="ProID" Value="<%#Eval("ProID") %>"/>
           <div id="Col<%#Eval("ProID") %>" class="collapse in">
....

您可以创建一个使用 ProId 作为键的字典列表

    private Dictionary<string, List<string>> GetCheckedItems()
    {
        Dictionary<string, List<string>> checkedItemsList = new Dictionary<string, List<string>>();
        foreach (RepeaterItem item in rp_outer.Items)
            if (item.ItemType == ListItemType.Item)
            {
                CheckBoxList itemCheckBoxList = item.FindControl("cbxlist") as CheckBoxList;
                if (itemCheckBoxList != null)
                {
                    string proIdValue = (item.FindControl("ProID") as HiddenField).Value;
                    List<string> checkedItems = new List<string>();
                    foreach (ListItem checkBoxItem in itemCheckBoxList.Items)
                        if (checkBoxItem.Selected)
                            checkedItems.Add(checkBoxItem.Value);
                    checkedItemsList.Add(proIdValue, checkedItems);
                }
            }
        return checkedItemsList;
    }