jqGrid系列:选择显示列

jqGrid支持用户自定义显示哪些列。官方实际上有两种实现方式。

一、columnChooser方法

这是官方现在推荐的实现方法。

demo >>New in version 3.6>>Column Chooser

具体怎么用,wiki里写的很清楚。http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jquery_ui_methods

注意:实现demo的效果需要引入JQuery UI。

具体需要引入(我引得jqGrid,因为这是支持IE6的最后一个版本):

 1 <link rel="stylesheet" type="text/css" media="screen" href="../css/jquery_ui/jquery-ui.css" />
 2 <link rel="stylesheet" type="text/css" media="screen" href="../js/jqGrid/src/css/ui.multiselect.css" />
 3 <link rel="stylesheet" type="text/css" media="screen" href="../js/jqGrid/src/css/ui.jqgrid.css" />
 4 
 5 <script src="../js/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
 6 <script src="../js/jqGrid/i18n/grid.locale-en.js" type="text/javascript"></script>
 7 <script src="../js/jquery/ui/jquery.ui.core.js" type="text/javascript"></script>
 8 <script src="../js/jquery/ui/jquery-ui.min.js" type="text/javascript"></script>
 9 <script src="../js/jquery/ui/jquery.ui.widget.js" type="text/javascript"></script>
10 <script src="../js/jquery/ui/jquery.ui.mouse.js" type="text/javascript"></script>
11 <script src="../js/jquery/ui/jquery.ui.draggable.js" type="text/javascript"></script>
12 <script src="../js/jquery/ui/jquery.ui.sortable.js" type="text/javascript"></script>
13 <script src="../js/jqGrid/src/ui.multiselect.js" type="text/javascript"></script>
14 <script src="../js/jqGrid/jquery.jqGrid.min.js" type="text/javascript"></script>
View Code

二、setColumns方法

这种方式官方已经不再推荐,4.0以上版本也不再自带(需引入插件)

但由于我开发的系统早期引入了easyUI控件,与columnChooser方式依赖的JQuery UI会冲突,so。。。

(冲突时由于jquery-ui.min.js和jquery.easyui.min.js有相同的方法)

基本的实现看官方WIKI就够了。

需要引入:

<script src="/js/jqGrid/src/grid.setcolumns.js" type="text/javascript"></script>

实现效果如图

Submit和Cancel的国际化可以在i18n/grid.locale-en.js中找到

1 col : {
2         caption: "选择列",
3         bSubmit: "确定",
4         bCancel: "取消"
5     },
View Code
选项  解释默认值
saveicon

该选项时一个数组元素,其默认值为[true,”left”,”ui-icon-disk”],用于设置确认按钮。

第一个元素用于是否展示图标,第二个元素用于指定图标居左或局右显示,第三个元素用于指定图标(必须是UI theme roller

[true,”left”,”ui-icon-disk”]       

 

 

 

如果看按钮旁的小图标不爽,把saveicon和closeicon设为[false]就可以去掉。

必须是UI theme roller”是指

原生的checkbox功能太弱,竟然没有全选的功能。被测试人员逼了两天,终于把这个小功能憋出来了。

需要改插件的源码(grid.setcolumns.js),如下

 

  1 ;(function($){
  2 /**
  3  * jqGrid extension for manipulating columns properties
  4  * Piotr Roznicki roznicki@o2.pl
  5  * http://www.roznicki.prv.pl
  6  * Dual licensed under the MIT and GPL licenses:
  7  * http://www.opensource.org/licenses/mit-license.php
  8  * http://www.gnu.org/licenses/gpl-2.0.html
  9 **/
 10 $.jgrid.extend({
 11     setColumns : function(p) {
 12         p = $.extend({
 13             top : 0,
 14             left: 0,
 15             width: 200,
 16             height: 'auto',
 17             dataheight: 'auto',
 18             modal: false,
 19             drag: true,
 20             beforeShowForm: null,
 21             afterShowForm: null,
 22             afterSubmitForm: null,
 23             closeOnEscape : true,
 24             ShrinkToFit : false,
 25             jqModal : false,
 26             saveicon: [true,"left","ui-icon-disk"],
 27             closeicon: [true,"left","ui-icon-close"],
 28             onClose : null,
 29             colnameview : true,
 30             closeAfterSubmit : true,
 31             updateAfterCheck : false,
 32             recreateForm : false
 33         }, $.jgrid.col, p ||{});
 34         return this.each(function(){
 35             var $t = this;
 36             if (!$t.grid ) { return; }
 37             var onBeforeShow = typeof p.beforeShowForm === 'function' ? true: false;
 38             var onAfterShow = typeof p.afterShowForm === 'function' ? true: false;
 39             var onAfterSubmit = typeof p.afterSubmitForm === 'function' ? true: false;            
 40             var gID = $t.p.id,
 41             dtbl = "ColTbl_"+gID,
 42             IDs = {themodal:'colmod'+gID,modalhead:'colhd'+gID,modalcontent:'colcnt'+gID, scrollelm: dtbl};
 43             if(p.recreateForm===true && $("#"+IDs.themodal).html() != null) {
 44                 $("#"+IDs.themodal).remove();
 45             }
 46             if ( $("#"+IDs.themodal).html() != null ) {
 47                 if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); }
 48                 $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM:false, modal:p.modal});
 49                 if(onAfterShow) { p.afterShowForm($("#"+dtbl)); }
 50             } else {
 51                 var dh = isNaN(p.dataheight) ? p.dataheight : p.dataheight+"px";
 52                 var formdata = "<div id='"+dtbl+"' class='formdata' style='width:100%;overflow:auto;position:relative;height:"+dh+";'>";
 53                 formdata += "<table class='ColTable' cellspacing='1' cellpading='2' border='0'><tbody>";
 54                 for(i=0;i<this.p.colNames.length;i++){
 55                     if(!$t.p.colModel[i].hidedlg) { // added from T. Tomov
 56                         formdata += "<tr><td style='white-space: pre;'><input type='checkbox' style='margin-right:5px;' id='col_" + this.p.colModel[i].name + "' class='cbox' value='T' " + 
 57                         ((this.p.colModel[i].hidden===false)?"checked":"") + "/>" +  "<label for='col_" + this.p.colModel[i].name + "'>" + this.p.colNames[i] + ((p.colnameview) ? " (" + this.p.colModel[i].name + ")" : "" )+ "</label></td></tr>";
 58                     }
 59                 }
 60                 formdata += "</tbody></table></div>"
 61                 var bS  = !p.updateAfterCheck ? "<a href='javascript:void(0)' id='dData' class='fm-button ui-state-default ui-corner-all'>"+p.bSubmit+"</a>" : "",
 62                 bC  ="<a href='javascript:void(0)' id='eData' class='fm-button ui-state-default ui-corner-all'>"+p.bCancel+"</a>";
 63                 bSel ="<a href='javascript:void(0)' id='selData' class='fm-button ui-state-default ui-corner-all'>"+p.bSelAll+"</a>";
 64                 bCan ="<a href='javascript:void(0)' id='cancelData' class='fm-button ui-state-default ui-corner-all'>"+p.bCanAll+"</a>";
 65                 formdata += "<table border='0' class='EditTable' id='"+dtbl+"_2'><tbody><tr style='display:block;height:3px;'><td></td></tr><tr><td class='DataTD ui-widget-content'></td></tr><tr><td class='ColButton EditButton'>"+bSel+"&#160;"+bCan+"&#160;"+bS+"&#160;"+bC+"</td></tr></tbody></table>";
 66                 p.gbox = "#gbox_"+gID;
 67                 $.jgrid.createModal(IDs,formdata,p,"#gview_"+$t.p.id,$("#gview_"+$t.p.id)[0]);
 68                 if(p.saveicon[0]==true) {
 69                     $("#dData","#"+dtbl+"_2").addClass(p.saveicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
 70                     .append("<span class='ui-icon "+p.saveicon[2]+"'></span>");
 71                 }
 72                 if(p.closeicon[0]==true) {
 73                     $("#eData","#"+dtbl+"_2").addClass(p.closeicon[1] == "right" ? 'fm-button-icon-right' : 'fm-button-icon-left')
 74                     .append("<span class='ui-icon "+p.closeicon[2]+"'></span>");
 75                 }
 76                 if(!p.updateAfterCheck) {
 77                     $("#dData","#"+dtbl+"_2").click(function(e){
 78                         for(i=0;i<$t.p.colModel.length;i++){
 79                             if(!$t.p.colModel[i].hidedlg) { // added from T. Tomov
 80                                 var nm = $t.p.colModel[i].name.replace(/\./g, "\\.");
 81                                 if($("#col_" + nm,"#"+dtbl).attr("checked")) {
 82                                     $($t).jqGrid("showCol",$t.p.colModel[i].name);
 83                                     $("#col_" + nm,"#"+dtbl).attr("defaultChecked",true); // Added from T. Tomov IE BUG
 84                                 } else {
 85                                     $($t).jqGrid("hideCol",$t.p.colModel[i].name);
 86                                     $("#col_" + nm,"#"+dtbl).attr("defaultChecked",""); // Added from T. Tomov IE BUG
 87                                 }
 88                             }
 89                         }
 90                         if(p.ShrinkToFit===true) {
 91                             $($t).jqGrid("setGridWidth",$t.grid.width-0.001,true);
 92                         }
 93                         if(p.closeAfterSubmit) $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: p.onClose});
 94                         if (onAfterSubmit) { p.afterSubmitForm($("#"+dtbl)); }
 95                         return false;
 96                     });
 97                 } else {
 98                     $(":input","#"+dtbl).click(function(e){
 99                         var cn = this.id.substr(4);
100                         if(cn){
101                             if(this.checked) {
102                                 $($t).jqGrid("showCol",cn);
103                             } else {
104                                 $($t).jqGrid("hideCol",cn);
105                             }
106                             if(p.ShrinkToFit===true) {
107                                 $($t).jqGrid("setGridWidth",$t.grid.width-0.001,true);
108                             }
109                         }
110                         return this;
111                     });
112                 }
113                 $("#eData", "#"+dtbl+"_2").click(function(e){
114                     $.jgrid.hideModal("#"+IDs.themodal,{gb:"#gbox_"+gID,jqm:p.jqModal, onClose: p.onClose});
115                     return false;
116                 });
117                 $("#selData").click(function(e){
118                     $("#"+IDs.modalcontent).find(":checkbox").attr("checked","checked");
119                     return false;
120                 });
121                 $("#cancelData").click(function(e){
122                     $("#"+IDs.modalcontent).find(":checkbox").removeAttr("checked");
123                     return false;
124                 });
125                 $("#dData, #eData, #selData, #cancelData","#"+dtbl+"_2").hover(
126                    function(){$(this).addClass('ui-state-hover');}, 
127                    function(){$(this).removeClass('ui-state-hover');}
128                 );                
129                 if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); }
130                 $.jgrid.viewModal("#"+IDs.themodal,{gbox:"#gbox_"+gID,jqm:p.jqModal, jqM: true, modal:p.modal});
131                 if(onAfterShow) { p.afterShowForm($("#"+dtbl)); }
132             }
133         });
134     }
135 });
136 })(jQuery);
View Code

 

 

转载于:https://www.cnblogs.com/sxlzll/archive/2013/05/29/3100083.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值