勾选所有复选框在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;
}
}
}
}
解决方案很简单,请遵循以下步骤:(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;
}
}
}
你可以用网格,面板来代替组框