javascript - GridView 中的全选不起作用
问题描述
我有一个 .net Gridview,其中添加了“全选”复选框以选择网格中可用的所有行。下面是我的网格代码
<asp:TemplateColumn>
<HeaderTemplate>
<input id="chkAll" type="checkbox" onclick="CheckAllDataGridCheckBoxes('chkItem',this.checked)">
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkItem" runat="server"></asp:CheckBox>
</ItemTemplate>
这是我的javascript代码
<script type="text/javascript">
function CheckAllDataGridCheckBoxes(aspCheckBoxID, checkVal)
{
re = new RegExp(':' + aspCheckBoxID + '$') //generated control name starts with a colon
for(i = 0; i < document.forms[0].elements.length; i++)
{
elm = document.forms[0].elements[i]
if (elm.type == 'checkbox')
{
if (re.test(elm.name))
elm.checked = checkVal
}
}
}
</script>
为什么当我单击“全选”时我的所有行仍未选中。我的javascript有什么问题?
更新的 Javascript
function CheckAllDataGridCheckBoxes(aspCheckBoxID, checkVal)
{
for (i = 0; i < document.forms[0].elements.length; i++)
{
elm = document.forms[0].elements[i]
if (elm.name.endsWith(aspCheckBoxID))
{
elm.checked = checkVal
}
}
}
解决方案
执行此任务不需要正则表达式。改用这个:
if (elm.name.endsWith(aspCheckBoxID))
参考:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
推荐阅读
- google-apps-script - 编写教育成绩册
- flutter - Android Studio 在编辑大型多部分 dart 文件时内存不足
- r - 包数据集未被识别为对象
- java - Java for 循环词
- python - Django - 创建和更新函数的间隔,之后函数执行
- .net-core - F# .fsx 脚本:如何将“paket”注册为包管理器?
- laravel - 使用 Laravel 8 测试表单请求
- ruby-on-rails - 我不知道如何在我的 rails 应用程序中处理用户角色以及使用 cancancan gem
- node.js - Mongoose 增量运算符将计数增加 2
- flutter - 如何使它成为 Futurebuilder 而不是 DocumentSnapshot?