检查是否在使用Javascript的GridView的行中选中了asp Checkbox

时间:2012-06-05 15:51:28

标签: javascript asp.net

我有一个网格视图,我想看看是否选中了第一列中的复选框。如果选中该复选框,则会打开一个新窗口。我无法弄清楚如何选中复选框。请帮助下面的功能不起作用,我无法弄清楚原因。

function mapSelectedClick() 
    {
        var CustomerIDs = "";
        var grid = document.getElementById('<%=grdCustomers.ClientID %>');

        for (var i = 1; i < grid.rows.length; i++)
        {
            var Row = grid.rows[i];
            var CustomerID = grid.rows[i].cells[1].innerText;
            if (grid.rows[i].cell[0].type == "checkbox")
            {
                if (grid.rows[i].cell[0].childNodes[0].checked)
                {
                    customerIDs += CustomerID.toString() + ',';
                }
            }
        }

        customerIDs = customerIDs.substring(0, customerIDs.length-1);
        window.open("MapCustomers.aspx?CustomerIDs=" + customerIDs);
    }

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些问题:

  1. if条件下,您使用cell[0]代替cells[0]
  2. 在外if条件下,您使用了cell[0].type == "checkbox"。单元格不能具有类型复选框,它包含chekbox控件作为其子项
  3. 像这样修改你的功能:

    function mapSelectedClick() 
    {
        var CustomerIDs = "";
        var grid = document.getElementById('<%=grdCustomers.ClientID %>');
    
        for (var i = 1; i < grid.rows.length; i++)
        {
            var Row = grid.rows[i];
            var CustomerID = Row.cells[1].innerText;
            var ctrl = Row.cells[0].childNodes[0];
            if (ctrl.type == "checkbox")
            {
                if (ctrl.checked)
                {
                    customerIDs += CustomerID.toString() + ',';
                }
            }
        }
    
        customerIDs = customerIDs.substring(0, customerIDs.length-1);
        window.open("MapCustomers.aspx?CustomerIDs=" + customerIDs);
    }
    

    请注意innerText不兼容浏览器,请尽可能使用innerHTML。