asp.net - 限制动态填充的 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
从未触发过。我怎样才能做到这一点?
解决方案
您需要设置OnSelectedIndexChanged
和AutoPostBack="True"
:
<asp:CheckBoxList runat="server" ID="cblItems" DataSourceID="sqlItems"
DataTextField="Item" DataValueField="ID" RepeatLayout="Table"
RepeatDirection="Horizontal" RepeatColumns="2"
AutoPostBack="True" OnSelectedIndexChanged="cblItems"/>
推荐阅读
- html - 悬停在Angular中时如何截断长字符串并为完整字符串添加工具提示
- azure - 未找到 Azure Nuxt
- google-apps-script - 在 Google Workspace 附加卡中调整图片大小
- sql - 处理涉及数据库数据的 Web 应用程序上的复杂计算
- firebase - Firebase Analytics 与 BigQuery 时间范围的连接
- objective-c - 使用 Switch 语句获取最高级别的移位枚举值
- angular - echarts line + area buggy scale
- stripe-payments - 如何让我的客户使用 Stripe Billing Portal 选择计划?
- php - 如何仅在产品标题上方显示父类别?
- sql-server - SQL Server 将 XML 反序列化为表