此次的知識點是如何使用js獲取checkbox控件所在的是第幾行!!!this
咱們能夠使用 JavaScript 中自帶的 rowIndex 和 cellIndex 來獲取行和列的鍵值 (從0開始)spa
這兩個必定要記好:code
var row_num = GV.rows[i].cells[0].children(0).parentNode.parentNode.rowIndex;server
var
col_num = target.parentNode.cellIndex;
ip
獲取 parentNode (也就是 td),td.cellIndex 就是所在列的鍵值開發
獲取 parentNode.parentNode (也就是 tr),tr.rowIndex 就是所在行的鍵值get
在開發過程當中,GridView綁定數據時須要在第一列綁定checkbox控件用來執行多選等複雜操做,而後能夠在前臺頁面經過手動點擊checkbox來使其checked屬性變成true也就是選中狀態,在後臺循環時能夠輕鬆獲取到checkbox的checked值,可是因爲一些業務需求可能不須要使用手動去點擊,而是經過編寫出js方法,若符合方法結果的則循環修改checkbox的checked屬性變成true也就是選中狀態,這時會發如今後臺是獲取不到checkbox的checked值。input
在我遇到這個問題時也讓我困擾了很久,明明在前臺經過js方法已經將某些checkbox控件的checked值設置爲true了,爲何在後臺就是獲取不到呢?class
好了,我來講一下最後我是怎麼解決的:後臺
首先這個問題是在前臺js中能夠獲取到checkbox的checked的值,可是在後臺循環時獲取不到。
先設置一個隱藏控件:
<input type="hidden" id="row_num" runat="server" />
在前臺先經過循環判斷被選中的checkbox
if (GV.rows[i].cells[0].children(0).checked) {
var row_num = GV.rows[i].cells[0].children(0).parentNode.parentNode.rowIndex;
document.getElementById("row_num").value = row_num;
}
而後經過 var row_num = GV.rows[i].cells[0].children(0).parentNode.parentNode.rowIndex;來獲取到在GridView中第幾行的CheckBoex的行數,而後賦值到一個隱藏控件上去,這樣在後臺就能夠獲取到這個隱藏控件上面的值了,而後經過在Rows[]裏面將取得的數減1就是在前臺被選中的checkbox的行數,最後將它設置爲True就OK了。
if (this.row_num.Value != "") { int j = Convert.ToInt32(this.row_num.Value); (this.GridView1.Rows[j - 1].Cells[0].FindControl("CKB_data") as CheckBox).Checked = true; this.row_num.Value = ""; }