官网给的例子里单页全选得不到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)'就可以触发了。