首页 > 解决方案 > 限制动态填充的 CheckBoxList 中选中的复选框的数量

问题描述

我有一个从 SQL Server 填充的 CheckBoxList:

<asp:CheckBoxList runat="server" ID="cblItems" DataSourceID="sqlItems"
     DataTextField="Item" DataValueField="ID" RepeatLayout="Table"
     RepeatDirection="Horizontal" RepeatColumns="2" />

这由 SqlDataSource 填充sqlItems(如您在 DataSourceID 字段中所见)。

我想做的是一次最多只能检查两个复选框。我最初尝试使用SelectedIndexChanged处理程序进行此操作,即使我认为它可能行不通。

Protected Sub cblItems(sender As Object, e As EventArgs) Handles cblItems.SelectedIndexChanged
     dim numSelected as Integer = 0

     For Each li as ListItem in cblItems.Items
          If li.selected then
                numSelected = numSelected + 1
          End If
     Next

     If numSelected = 2 then
          MsgBox("Disable CheckBoxes Here")
     End If
End Sub

如您所见,我什至没有达到禁用未选中复选框的目的,因为SelectedIndexChanged从未触发过。我怎样才能做到这一点?

标签: asp.netvb.netwebforms

解决方案


您需要设置OnSelectedIndexChangedAutoPostBack="True"

<asp:CheckBoxList runat="server" ID="cblItems" DataSourceID="sqlItems"
     DataTextField="Item" DataValueField="ID" RepeatLayout="Table"
     RepeatDirection="Horizontal" RepeatColumns="2" 
     AutoPostBack="True" OnSelectedIndexChanged="cblItems"/>

推荐阅读