在GridView中全选不起作用



我有一个.net网格视图,其中添加了"全选"复选框来选择网格中所有可用的行。下面是我的网格代码

<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
}
}
}

Regex不需要执行此任务。使用这个替代:

if (elm.name.endsWith(aspCheckBoxID))

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith

最新更新