如何从转发器中的复选框列表中获取选中的值,我不知道如何收集集合列表中的所有选中值。
<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>
答案 0 :(得分:0)
您需要使用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;
}