1

我在数据列表中有一个复选框列表:

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

我在其中加载了两个列表项来表示“是”和“否”。如何在选定的复选框中获取事件?

4

2 回答 2

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();
}
于 2012-10-16T16:09:26.007 回答
1

另一种方式,只是想想。该解决方案最大限度地减少了客户端和服务器之间的往返。

使用按钮的点击事件。您可以遍历 DataListItems 并使用 FindControl 方法查找 CheckBoxList。现在您可以确定检查了哪些元素:

foreach (DataListItem item in dtlstfilter.Items)
{
  if (item.ItemType == ListItemType.Item)
  {
    CheckBoxList checkBox = item.FindControl("chklist") as CheckBoxList;
  }
}
于 2012-10-17T06:20:26.927 回答