2012-06-05 4 views
0

У меня есть вид сетки, и я хочу проверить, установлен ли флажок в первом столбце. Если флажок установлен, откроется новое окно. Я не могу понять, как проверить, установлен ли флажок. Пожалуйста, помогите, функция ниже не работает, и я не могу понять, почему.Проверьте, установлен ли флажок asp в строке GridView с Javascript

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

Есть несколько проблем в вашем коде:

  1. В обоих if условиях, вы использовали cell[0] вместо cells[0]
  2. В наружном if состоянии вы использовали cell[0].type == "checkbox". Cell не может иметь тип флажок, он включает в себя chekbox контроль как своего ребенка

Modify вашу функцию, как это:

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 везде, где это возможно.

Смежные вопросы