Javascript 如何筛选“全选”复选框以仅选择网格上的特定列
我有一个全选复选框Java脚本,它在我的Gridview上只选择启用的复选框。 问题是我在网格中添加了另一个复选框列,当前Java脚本正在为所有列选择所有启用的复选框 以下是我的ASP.NET代码:Javascript 如何筛选“全选”复选框以仅选择网格上的特定列,javascript,asp.net,checkbox,Javascript,Asp.net,Checkbox,我有一个全选复选框Java脚本,它在我的Gridview上只选择启用的复选框。 问题是我在网格中添加了另一个复选框列,当前Java脚本正在为所有列选择所有启用的复选框 以下是我的ASP.NET代码: <asp:templatefield> <itemtemplate> <asp:CheckBox ID="chkRowPaid" runat="server" Enabled='<%# IIf((Conve
<asp:templatefield>
<itemtemplate>
<asp:CheckBox ID="chkRowPaid" runat="server" Enabled='<%# IIf((Convert.ToString(Eval("Amount_Paid_By_Driver"))) = "1", "false", "true")%>' />
</itemtemplate>
<headertemplate>
<asp:CheckBox ID="SelectAllPaid" runat="server" onclick="CheckAllPaid(this);" />
</headertemplate>
<headerstyle horizontalalign="left" />
<itemstyle horizontalalign="left" />
</asp:templatefield>
以及如下所示的Java脚本,用于防止选中禁用的复选框:
<script type="text/javascript" language="javascript">
function CheckAllPaid(objRef) {
var GridView = objRef.parentNode.parentNode.parentNode;
var inputList = GridView.getElementsByTagName("input");
for (var i = 0; i < inputList.length; i++) {
var row = inputList[i].parentNode.parentNode;
if (objRef.checked && !inputList[i].disabled) {
inputList[i].checked = true;
} else {
inputList[i].checked = false;
}
}
}
</script>
功能检查全部付费(objRef){
var GridView=objRef.parentNode.parentNode.parentNode;
var inputList=GridView.getElementsByTagName(“输入”);
对于(变量i=0;i
请仅使用Java脚本进行更新,因为我不知道如何将JQuery用于“全选”复选框,而且我在Java脚本编写方面非常努力。您需要一种方法来区分希望选中
的控件和不希望选中的控件。为了完成此任务,我们将使用CssClass
,如下所示:
<asp:CheckBox ID="SelectAllPaid" runat="server" onclick="CheckAllPaid(this);" CssClass="checkThis" />
JavaScript代码:
函数SelectAll(objRef){
var GridView=objRef.parentNode.parentNode.parentNode;
var inputList=GridView.getElementsByClassName(“checkThis”);//新选择器
对于(变量i=0;i
您可以通过CSS类名在单个列中选择复选框
唯一的问题是ASP.Net呈现的复选框不是简单的input标记,而是在span标记中,CSS类名应用于span标记
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkRowPaid" runat="server"
Enabled='<%# Eval("Amount_Paid_By_Driver").ToString() != "1" %>'
CssClass="paid" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="SelectAllPaid" runat="server"
onclick="CheckAllPaid(this);" />
</HeaderTemplate>
<HeaderStyle HorizontalAlign="left" />
<ItemStyle HorizontalAlign="left" />
</asp:TemplateField>
</Columns>
</asp:GridView>
<script type="text/javascript">
function CheckAllPaid(objRef) {
var GridView = objRef.parentNode.parentNode.parentNode;
var spanList = GridView.getElementsByClassName("paid");
for (var i = 0; i < spanList.length; i++) {
var input = spanList[i].childNodes[0];
if (objRef.checked && !input.disabled) {
input.checked = true;
}
else {
input.checked = false;
}
}
}
</script>
功能检查全部付费(objRef){
var GridView=objRef.parentNode.parentNode.parentNode;
var spanList=GridView.getElementsByClassName(“已付”);
对于(变量i=0;i
你能在你想选中的复选框中添加一个类吗?…类似于CssClass=“myClass”
?是的,我可以添加CssClass OK,然后我将发布一个答案:)我真的很感谢你的回答,我已经用了将近一周的时间尝试了许多不同的方法。我强烈建议你学习jQuery;基本用法不难学。如果您使用jQuery,您可以在几行代码中获得相同的结果。谢谢,伙计,它真的很有帮助,并且通过使用Win的代码,它工作得很有魅力。
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkRowPaid" runat="server"
Enabled='<%# Eval("Amount_Paid_By_Driver").ToString() != "1" %>'
CssClass="paid" />
</ItemTemplate>
<HeaderTemplate>
<asp:CheckBox ID="SelectAllPaid" runat="server"
onclick="CheckAllPaid(this);" />
</HeaderTemplate>
<HeaderStyle HorizontalAlign="left" />
<ItemStyle HorizontalAlign="left" />
</asp:TemplateField>
</Columns>
</asp:GridView>
<script type="text/javascript">
function CheckAllPaid(objRef) {
var GridView = objRef.parentNode.parentNode.parentNode;
var spanList = GridView.getElementsByClassName("paid");
for (var i = 0; i < spanList.length; i++) {
var input = spanList[i].childNodes[0];
if (objRef.checked && !input.disabled) {
input.checked = true;
}
else {
input.checked = false;
}
}
}
</script>