天天看點

jqgrid for asp.net 單頁全選記錄ID

官網給的例子裡單頁全選得不到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)'就可以觸發了。

繼續閱讀