勾选所有复选框在gridview中勾选所有复选框花费很长时间

本文关键字:复选框 长时间 gridview | 更新日期: 2023-09-27 18:18:33

我使用下面的代码来检查gridview中的所有复选框。格拉德大约有2000到2500条记录。但是它需要很长时间来检查所有的复选框,有时页面停止响应时,点击checkall复选框。

请提出改进建议。这会很有帮助的。

function checkAll(checkAllBox)
        {
        var chkBoxId;
        chkBoxId = "chkSelect";     
        //alert(checkAllBox.value);

        //alert(chkBoxId);
        var chkState = checkAllBox.checked;
        for(i=0;i<document.Form1.length;i++)
        {
            e = document.Form1.elements[i];
            if(e.type == 'checkbox' && e.name.indexOf(chkBoxId) != -1)
            {
                checkAllBox.checked = chkState;
                if(e.disabled == false)
                {
                    e.checked=chkState;                     
                }       
            }
            else if(e.type == 'checkbox' && e.name.indexOf(chkBoxId) == -1)
            {
                if(chkState == true)
                {
                    e.checked = false;
                }
            }
        }
    }

勾选所有复选框在gridview中勾选所有复选框花费很长时间

解决方案很简单,请遵循以下步骤:(1)首先在网格视图的标题中添加一个复选框。(2)创建标题复选框更改事件(3)通过添加用户自定义类将复选框动态添加到所有行中(4)然后将函数代码写入标题复选框更改事件。写代码。$('输入:复选框.yourclass ') .attr("检查",真正的)。此代码选中表

的所有复选框

在一个页面上有2500条记录似乎太多了。您可以考虑使用分页在一个页面上显示50条或100条记录。它会给你更快的下载和渲染页面。

您可以使用querySelector通过简单和简短的代码获得更好的性能。假设复选框的名称以chkSelect开头,那么使用^(以)通配符。虽然您可以使用包含*或以$结尾

var els = document.querySelector("[name^='chkSelect']");
for (i = 0; i < els.length; i++) {
     els[i].checked = checkstate;
}

如果你可以使用jQuery,你可以使用attribute = selector

$("[name^='chkSelect']").prop("checked", checkstate);

如果你有或者可以给复选框分配类,你可以使用类选择器

试试这几行代码

foreach(Control c in groupBox1.Controls)
{
 if(c is CheckBox)
 {
   CheckBox cb = (CheckBox)c;
    if(cb.Checked == false)
    {
       cb.Checked = true;
    }
    else
    {
       cb.Checked = false;
    }
 }
}

你可以用网格,面板来代替组框