数据列表中的复选框列表

时间:2012-10-16 15:43:29

标签: c# asp.net

我在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>

我在这里加载了两个列表项来说“是”和“否”。如何在所选复选框中获取活动?

2 个答案:

答案 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;
  }
}