Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何筛选“全选”复选框以仅选择网格上的特定列_Javascript_Asp.net_Checkbox - Fatal编程技术网

Javascript 如何筛选“全选”复选框以仅选择网格上的特定列

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

我有一个全选复选框Java脚本,它在我的Gridview上只选择启用的复选框。 问题是我在网格中添加了另一个复选框列,当前Java脚本正在为所有列选择所有启用的复选框

以下是我的ASP.NET代码:

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