Плагин для jqGrid для сохранения и восстановления состояния колонок в локальном хранилище
Данный плагин разработан для сохранения состояния колонок таблиц jqgrid при перезагрузке страницы. Сохраняет/восстанавливает состояние колонок: скрыт/не скрыт и ширину. Более ничего. В принципе легко доработать для получения возможности сохранения любых других параметров.
Пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
jQuery("#fininetinfo").jqGrid({ url:'tinfo.php?orgid='+defaultorgid+"&blibase="+$("#blibase").val()+"&agrm_id="+agrm_id, datatype: "json", colNames:['id','Сумма','Тариф','Период','Дата нач.'], colModel:[ {name:'record_id' ,index:'record_id' , width:15,search: false,hidden:true,fixed:true}, {name:'amount' ,index:'amount' , width:55,editable:false,search: true,fixed:true}, {name:'tarif' ,index:'tarif' , width:60,editable:false,search: true}, {name:'period' ,index:'period' , width:60,editable:true,search: false,fixed:true}, {name:'dateofcharge',index:'dateofcharge' , width:60,editable:false,search: true,fixed:true} ], resizeStop: function() { $("#fininetinfo").saveCommonParam("fininetinfo"); }, gridComplete:function() { $("#fininetinfo").loadCommonParam("fininetinfo"); }, ... ... |
Команды:
1 |
$("селектор").saveCommonParam("уникальный идентификатор"); //сохраняем данные по колонкам |
1 |
$("селектор").loadCommonParam("уникальный идентифкатор использованный в saveCommonParam"); // загрузить данные по колонкам. |
Собственно сам плагин:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
$(function() { $.jgrid.extend({ setColWidth: function (iCol, newWidth, adjustGridWidth) { return this.each(function () { var $self = $(this), grid = this.grid, p = this.p, colName, colModel = p.colModel, i, nCol; if (typeof iCol === "string") { colName = iCol; for (i = 0, nCol = colModel.length; i < nCol; i++) { if (colModel[i].name === colName) { iCol = i; break; } } if (i >= nCol) { return; } } else if (typeof iCol !== "number") { return; } grid.resizing = { idx: iCol }; grid.headers[iCol].newWidth = newWidth; grid.newWidth = p.tblwidth + newWidth - grid.headers[iCol].width; grid.dragEnd(); if (adjustGridWidth !== false) { $self.jqGrid("setGridWidth", grid.newWidth, false); } }); } }); $.jgrid.extend({ saveCommonParam: function(stname){ colarray=$(this).jqGrid('getGridParam','colModel'); localStorage.setItem(stname, JSON.stringify(colarray)); console.log(JSON.stringify(colarray)); }, loadCommonParam: function(stname){ if (localStorage[stname]!=undefined) { colarray=localStorage[stname]; if (colarray!=""){ obj_for_load=JSON.parse(colarray); // загружаем JSON в массив for (i in obj_for_load) { //console.log("name:",obj_for_load[i].name); //console.log("width:",obj_for_load[i].width); if (obj_for_load[i].hidden==true){ $(this).hideCol(obj_for_load[i].name); } else { $(this).showCol(obj_for_load[i].name); if (obj_for_load[i].fixed==true){ $(this).setColWidth(obj_for_load[i].name, obj_for_load[i].width); }; } }; } } else { console.log("в локальном хранилище не найден ключ "+stname); }; } }); }); |