我在datalist中有一个复选框列表:
<asp:DataList ID="dtlstfilter" runat="server">
<ItemTemplate>
<div style="display: none;" id='<%#changes(Eval("FilterCode")) %>' class="p7ABcontent">
<p>
<asp:CheckBoxList AutoPostBack="true" Font-Size="12px" ID="chklist" runat="server" ></asp:CheckBoxList>
</p>
</div>
</ItemTemplate>
</asp:DataList>
我在这里加载了两个列表项来说“是”和“否”。如何在所选复选框中获取活动?
答案 0 :(得分:4)
您需要绑定SelectedIndexChanged事件并传递参数以使用自定义属性(用户定义的属性)获取当前rowNumber或您需要的任何其他内容。
在html中
<asp:DataList ID="dtlstfilter" runat="server" >
<ItemTemplate>
<div style="display: none;" id='<%#changes(Eval("FilterCode")) %>' class="p7ABcontent">
<p>
<asp:CheckBoxList AutoPostBack="true" Font-Size="12px" ID="chklist" runat="server" onselectedindexchanged="chklist_SelectedIndexChanged" CommandName="myCommand" CommandArguments="1" DataListRowNumber="1" ></asp:CheckBoxList>
</p>
</div>
</ItemTemplate>
</asp:DataList>
代码隐藏
protected void chklist_SelectedIndexChanged(object sender, EventArgs e)
{
CheckBoxList chklst = (CheckBoxList)sender;
string commandName = chklst.Attributes["CommandName"].ToString();
string commandArguments = chklst.Attributes["commandArguments"].ToString();
string dataListRowNumber = chklst.Attributes["DataListRowNumber"].ToString();
}
答案 1 :(得分:1)
另一种方式,只是想一想。此解决方案最大限度地减少了客户端和服务器之间的往返。
使用按钮的点击事件。您可以遍历DataListItems并使用FindControl方法查找CheckBoxList。现在您可以确定检查了哪些元素:
foreach (DataListItem item in dtlstfilter.Items)
{
if (item.ItemType == ListItemType.Item)
{
CheckBoxList checkBox = item.FindControl("chklist") as CheckBoxList;
}
}