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 に答える