0

我有一个网格视图,我想看看第一列中的复选框是否被选中。如果选中该复选框,则会打开一个新窗口。我不知道如何查看复选框是否被选中。请帮助下面的功能不起作用,我不知道为什么。

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);
    }
4

1 回答 1

1

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

  1. 在这两种if情况下,您都使用cell[0]而不是cells[0]
  2. 在您使用的外部if条件下cell[0].type == "checkbox"。单元格不能有类型复选框,它包含chekbox控件作为其子项

像这样修改你的函数:

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。

于 2012-06-05T18:29:01.020 回答