這次的知識點是如何使用js獲取checkbox控制項所在的是第幾行!!! 我們可以使用 JavaScript 中自帶的 rowIndex 和 cellIndex 來獲取行和列的鍵值 (從0開始) 這兩個一定要記好: var row_num = GV.rows[i].cells[0].children( ...
這次的知識點是如何使用js獲取checkbox控制項所在的是第幾行!!!
我們可以使用 JavaScript 中自帶的 rowIndex 和 cellIndex 來獲取行和列的鍵值 (從0開始)
這兩個一定要記好:
var row_num = GV.rows[i].cells[0].children(0).parentNode.parentNode.rowIndex;
var
col_num = target.parentNode.cellIndex;
獲取 parentNode (也就是 td),td.cellIndex 就是所在列的鍵值
獲取 parentNode.parentNode (也就是 tr),tr.rowIndex 就是所在行的鍵值
在開發過程中,GridView綁定數據時需要在第一列綁定checkbox控制項用來執行多選等複雜操作,然後可以在前臺頁面通過手動點擊checkbox來使其checked屬性變成true也就是選中狀態,在後臺迴圈時可以輕鬆獲取到checkbox的checked值,但是由於一些業務需求可能不需要使用手動去點擊,而是通過編寫出js方法,若符合方法結果的則迴圈修改checkbox的checked屬性變成true也就是選中狀態,這時會發現在後臺是獲取不到checkbox的checked值。
在我遇到這個問題時也讓我困擾了好久,明明在前臺通過js方法已經將某些checkbox控制項的checked值設置為true了,為什麼在後臺就是獲取不到呢?
好了,我來說一下最後我是怎麼解決的:
首先這個問題是在前臺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 = "";
}