我正在尝试将某些列隐藏到选择器插件的隐藏部分,只有当我的网格首次加载 时。
现在,当用户选择隐藏部分中的某些列到显示列部分时,如果他再次重新加载,则他之前选择在网格中显示的列重装,必须坚持下去。
他们是否有办法实现这种情况? 任何帮助将不胜感激。
谢谢:)
答案 0 :(得分:0)
这需要一些工作来设置。基本思想是将一个函数附加到chosser插件的pageB onClickButton上,将这些数据保存在本地或数据库中,然后在加载网格之前使用.jqGrid(' showCol')方法。应该注意的是,这不是为多语言安装而设计的。
首先,假设您的网格ID 网格,Pager的ID为寻呼机(您可以选择您想要的 ui-icon ,但我只是认为垂直点看起来有点像柱子)
$('#grid').jqGrid('navButtonAdd','#pager',{caption:'',title:'Columns',buttonicon:'ui-icon-grip-dotted-vertical',id:'pager-colsel',onClickButton:function(){
$(this).jqGrid('columnChooser',{
done:function(){
var aryShow = new Array(),aryHide = new Array();
//this is predetermined by the plugin and is simply #colchoose_YOURGRID
$('#colchooser_grid option').each(function(){
if ($(this).is(':selected')){
aryShow.push($(this).html());
}else{
aryHide.push($(this).html());
}
});
//saves the selected columns as a string for storage
var show = aryShow.join(),hide = aryHide.join();
//now you need to store this variable somehow, either through $.post, localstorage, or a cookie
localStorage.setItem('chooser-show', show);
localStorage.setItem('chooser-hide', hide);
}
//forces user to make a choice before proceeding
,modal:true
});
}
});
接下来,您需要在第一次加载网格时获取变量。调用.jqGrid初始化方法后,使用以下代码显示
//explodes the stored strings into proper arrays for jqGrid
var aryShow = localStorage.getItem('chooser-show').split(',');
var aryHide = localStorage.getItem('chooser-hide').split(',');
//uses the hideCol and showCol methods to load the previously stored properties
$('#grid').jqGrid('hideCol',aryHide).jqGrid('showCol',aryShow);
**注意:如果您更改colModel中任何列的名称或添加/删除列,您将收到错误。如果您计划完全修改colModel,请确保在初始化期间添加代码以检查不完整的 chooser-show 和选择器隐藏 localStorage变量并删除它们