官網給的例子裡單頁全選得不到ID,一個一個選能得到,是以我要添加JS方法把rowid存到一個hidden裡以便讓背景也能收到,使全選時能存儲ID。
選中狀态的方法為.setSelection(rowid),因為本來這個頁就被選中了,是以這個方法就不用寫了。
第二步我要得到本頁的所有rowid,因為我的rowid綁定的是資料ID,是以不是按順序走的(可能跳),jqgrid for asp.net在前台也沒有提供方法(反正我沒找到)。每次加載行,把rowid存到控件裡就可以了,是以直接用了編輯連接配接位址的方法
//顯示資産資訊
function doShowAssetInfo(cellValue, options, rowObject) {
var strURL = "./_view.aspx?";
var imageHtml = "<a target='_blank' style='color:Blue; text-decoration:nonde;' href='" + strURL + "'>" + cellValue + "</a>";
document.getElementById("_hidListRows").value += document.getElementById("_hidListRows").value == "" ? rowObject[getColumnindex("Id")] : "," + rowObject[getColumnindex("Id")];
return imageHtml;
}
存在了_hidListRows裡,以‘,’隔開的。
第三部就是存儲ID,
function selectRowAll(e) {//接收控件
var grid = jQuery("#<%= Jqgrid1.ClientID %>");//得到jqgrid控件
var ListRows = document.getElementById("_hidListRows").value;//獲得所有rowid
var rows = [];//集合
var selection = false;//狀态
if (e.checked) {//判斷狀态
selection = true;//更改狀态
}
rows = ListRows.toString().split(',');//重置集合
for (var r in rows) {//循環
// grid.setSelection(rows[r]);//無用
rowSelected(rows[r], selection);//存儲ID的方法
}
}
需要個集合var selectedRows = [];
function rowSelected(rowID, isSelected) {//存儲ID的方法
selectedRows[rowID] = isSelected;//号對應狀态
updateSelectedRowsHidden();//翻頁記錄ID
}
//翻頁記錄ID
function updateSelectedRowsHidden() {
var hiddenrowField = $("#<%= SelectedRowsrow.ClientID %>");//得到控件
var selectedrowValues = "";
for (var row in selectedRows) {
if (selectedRows[row])//判斷狀态
selectedrowValues += selectedrowValues == "" ? row : "," + row;
}
hiddenrowField.val(selectedrowValues);//存到控件SelectedRowsrow裡
}
因為rowSelected方法在選擇行時用,是以就直接引用了這個方法,現在SelectedRowsrow控件裡就是全選的ID了,var selectedRows = [];集合裡也有選擇的ID,循環時要判斷狀态。
第四步是觸發selectRowAll,這裡隻能改js包了,jquery.jqGrid.min.js裡"<input role='checkbox' id='cb_"+this.p.id+"'...是生成表頭的checkbox控件,是以加了個onclick='selectRowAll(this)'就可以觸發了。