限制动态填充的 CheckBoxList 中选中的复选框的数量

Limit Number of Checked CheckBoxes in Dynamically Populated CheckBoxList

我有一个从 SQL 服务器填充的 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 从未触发过。我怎样才能做到这一点?

您需要设置OnSelectedIndexChangedAutoPostBack="True":

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