首页 > 解决方案 > 如何限制用户选中/取消选中 CheckBoxList 中的其他复选框,直到上一次单击的 SelectedIndexChanged 未完成

问题描述

我有一个动态创建的CheckBoxList 。当用户选中/取消选中任何复选框时,将为该特定复选框运行“ OnSelectedIndexChanged ”事件。这个事件有点冗长,涉及数据库访问和对全局十进制变量进行某些计算。在此事件未完成之前,我不希望用户选中/取消选中此CheckBoxList中的任何其他复选框,因为这会影响计算。如何限制用户这样做?如何在事件未完成之前禁用整个CheckboxList ?请注意,根据某些情况,列表中的某些复选框可能已经被禁用。

标签: c#asp.net

解决方案


我通过添加客户端onclick脚本成功地做到了,如下`

<div id="myCBL" style="width: 90%; display: inline-block;">
<asp:CheckBoxList ID="Payees" runat="server" AutoPostBack="True" OnSelectedIndexChanged="LstPayees_SelectedIndexChanged" RepeatLayout="Flow" CssClass="ListBoxinline" onclick="WaitForEvent()">
</asp:CheckBoxList> </div>

添加的脚本如下:

 function WaitForEvent() {
        var nodes = document.getElementById("myCBL").getElementsByTagName('*');
        for (var i = 0; i < nodes.length; i++) {
            nodes[i].disabled = true;
        }

在 OnSelectedIndexChanged 方法完成后,复选框本身会被启用。


推荐阅读