博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
easyui_datagrid_method_扩展
阅读量:4355 次
发布时间:2019-06-07

本文共 9722 字,大约阅读时间需要 32 分钟。

View Code
1 (function($){  2     if(!Array.prototype.indexOf){  3         Array.prototype.indexOf=function(obj,index){  4             var start =index||0;  5             if(start<0){  6                 start=this.length+start;  7             }  8             for(;this[start];start++){  9                 if(this[start]===obj){ 10                     return start; 11                 } 12             } 13             return -1; 14         } 15     } 16     var setCookie=function(key,val){document.cookie=(key+"="+escape(val)+";");}, 17         getCookie=function(key){ 18             var cookie=document.cookie; 19             if(cookie.length>0){ 20                 var start=cookie.indexOf(key+"="),end; 21                 if(start!=-1){ 22                     end=cookie.indexOf(";",String(key).length+1); 23                     if(end==-1){end=cookie.length;} 24                     return unescape(cookie.substring(start+String(key).length+1,end)); 25                 } 26             } 27             return ""; 28         }, 29         filterCol=function(defCol,srcCol){ 30             var i=srcCol.length; 31             while(i--){ 32                 defCol.indexOf(srcCol[i])==-1&&(srcCol.splice(i,1)); 33             } 34             return !!srcCol.length?srcCol:defCol; 35         }, 36         getHideCol=function(uuid){ 37             var start, 38                 end, 39                 hideCols=getCookie("hideCol"); 40             if(hideCols){ 41                 if((start=hideCols.indexOf(uuid+"_"))!=-1){ 42                     end=hideCols.indexOf(",",start+String(uuid).length+2); 43                     if(end==-1){ 44                         end=hideCols.length; 45                     } 46                     return  hideCols.substring(start+String(uuid).length+1,end).split("@"); 47                 } 48             } 49             return []; 50              51         }, 52         addMenuCookie=function(uuid,fieldName){ 53             var hideCols=getCookie("hideCol"), 54                 hideColArr=getHideCol(uuid); 55             if(hideCols){ 56                 if(hideColArr.length>0){ 57                     hideColArr.push(fieldName); 58                     hideCols=hideCols.replace(new RegExp(uuid+"_[^\,]+$"),uuid+"_"+hideColArr.join("@")); 59                 }else{ 60                     hideCols+=(","+uuid+"_"+fieldName); 61                 } 62             }else{ 63                 hideCols=(uuid+"_"+fieldName); 64             } 65             setCookie("hideCol",hideCols); 66         }, 67         delMenuCookie=function(uuid,fieldName){ 68             var hideCols=getCookie("hideCol"), 69                 hideColArr=getHideCol(uuid), 70                 i=hideColArr.length; 71             if(hideCols){ 72                 if(hideColArr.length>0){ 73                     while(i--){hideColArr[i]==fieldName&&(hideColArr.splice(i,1));} 74                     if(hideColArr.length>0){ 75                         hideCols=hideCols.replace(new RegExp(uuid+"_[^\,]+$"),uuid+"_"+hideColArr.join("@")); 76                     }else{ 77                         hideCols=hideCols.replace(new RegExp(uuid+"_[^\,]+\,?$"),""); 78                     } 79                     setCookie("hideCol",hideCols);     80                 } 81             } 82         }, 83         createMenu=function(jq,options,hideCol){ 84             var menuHtml="
", 85 col=options.col, 86 i=col.length; 87 while(i--){ 88 if(hideCol.indexOf(col[i])!=-1){ 89 menuHtml+="
"+jq.datagrid("getColumnOption",col[i]).title+"
"; 90 jq.datagrid("hideColumn",col[i]); 91 }else{ 92 menuHtml+="
"+jq.datagrid("getColumnOption",col[i]).title+"
"; 93 } 94 } 95 menuHtml+="
"; 96 jq.after(menuHtml); 97 $("#"+options.uuid).menu({ 98 onClick:function(item){ 99 var fieldName=$(item.target).attr("fieldName");100 if(item.iconCls=="icon-ok"){101 if($("#"+options.uuid+" .icon-ok").length==1){102 $.messager.alert("警告","需至少保留一列","warning");103 return;104 }105 jq.datagrid("hideColumn",fieldName);106 $("#"+options.uuid).menu("setIcon",{target:item.target,iconCls:"icon-empty"});107 addMenuCookie(options.uuid,fieldName);108 }else{109 jq.datagrid("showColumn",fieldName).datagrid("fitColumns");110 $("#"+options.uuid).menu("setIcon",{target:item.target,iconCls:"icon-ok"});111 delMenuCookie(options.uuid,fieldName);112 113 }114 }115 });116 if($("#"+options.uuid).height()>options.height){117 $("#"+options.uuid).css("height",options.height);118 if($.browser.msie&&$.browser.version==6){$("#"+options.uuid).css("overflow-y","auto");119 }else{$("#"+options.uuid).css("overflow","auto");}120 }121 jq.datagrid("options")._onHeaderContextMenu=jq.datagrid("options").onHeaderContextMenu;122 jq.datagrid("options").onHeaderContextMenu=function(e){e.preventDefault();$("#"+options.uuid).menu("show",{left:e.pageX,top:e.pageY});}123 jq[0].customColumn=true;124 125 };126 $.extend($.fn.datagrid.methods,{127 /**128 * 让datagrid的列拥有本地化隐藏显示功能(本地保存设置):129 * 对象参数说明:130 * {131 * 参数名 类型 描述 例 默认值132 * col array 让哪些列拥有本地化隐藏显示功能 $("#t1").datagrid("customColumn",{col:["col1","col2"]}) 所有列133 * height number 当超过此高度时锁定高度 $("#t1").datagrid("customColumn",{height:100}) 300134 * }135 * 调用方式:136 * 一:不传入任何参数(此时所有的列都拥有本地化功能)137 * $("#t1").datagrid("customColumn");138 * $("#t1,#t2").datagrid("customColumn");139 * 二:传入一个对象(替换第一个jquery的默认值)140 * $("#t1").datagrid("customColumn",{col:[col1,col2],height:300});141 * $("#t1,#t2").datagrid("customColumn",{col:[col1,col2],height:300});//t1的默认被覆盖,t2还是默认142 * 三:传入一个字符串(替换第一个jquery的属性)143 * $("#t1").datagrid("customColumn","col1,col2"]);144 * $("#t1,#t2").datagrid("customColumn","col1,col2"]);//t1的列被定制,t2还是默认145 * 四:传入一个数字(替换第一个jquery的属性)146 * $("#t1").datagrid("customColumn",300);147 * $("#t1,#t2").datagrid("customColumn",300);//t1的高度被覆盖,t2还是默认148 * 五:传入一个对象数组,对象需包含一个数组属性col(没有对应的则默认所有列) 149 * $("#t1").datagrid("customColumn",[{col:["col1","col2"]}]);//只有t1的col1,col2列拥有本地化隐藏显示功能150 * $("#t1,#t2").datagrid("customColumn",[{col:["col1","col2"]}]);//t1的col1,col2列拥有本地化隐藏显示功能,t2的所有列都拥有本地化隐藏显示功能151 * $("#t1,#t2").datagrid("customColumn",[{col:["col1","col2"]},{col:[col3,col4]}]);//t1的col1,col2列拥有本地化隐藏显示功能,t2的col3,col4列拥有本地化隐藏显示功能152 */153 customColumn:function(jq,param){154 return jq.each(function(i){155 if(this.customColumn){156 return true;157 }158 var $grid=$(this),159 defCol=$grid.datagrid("getColumnFields").concat($grid.datagrid("getColumnFields",true)),160 options={col:defCol,height:300};161 if($.isArray(param)&&$.isPlainObject(param[i])){162 $.extend(options,param[i]);163 }164 if(i==0){165 if(typeof param=="string"){166 $.extend(options,{col:param.split(",")});167 }168 if($.isNumeric(param)){169 $.extend(options,{height:param});170 }171 if($.isPlainObject(param)){172 $.extend(options,param);173 }174 }175 options.col=filterCol(defCol,options.col);176 for(var name in this){177 /^jQuery/.test(name)&&(options.uuid=this[name]);178 }179 createMenu($grid,options,getHideCol(options.uuid));180 });181 },182 unCustomColumn:function(jq){183 return jq.each(function(){184 var uuid,185 $grid=$(this),186 hideCols=getCookie("hideCol");187 for(var name in this){188 /^jQuery/.test(name)&&(uuid=this[name]);189 }190 if($("#"+uuid).length==1){191 delete this.customColumn;192 $("#"+uuid).remove();193 $grid.datagrid("options").onHeaderContextMenu=jq.datagrid("options")._onHeaderContextMenu||function(){};194 if(hideCols){195 hideCols=hideCols.replace(new RegExp(uuid+"_[^\,]+\,?$"),"");196 setCookie("hideCol",hideCols);197 }198 }199 });200 }201 });202 })($);

 

posted on
2013-01-29 11:02 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/hnklww/archive/2013/01/29/2880951.html

你可能感兴趣的文章
Thread
查看>>
HtmlEmail
查看>>
ThreadLocal
查看>>
线程池
查看>>
XMAL 中x名称控件的Auttribute
查看>>
java笔记11-内部类
查看>>
基本数据类型
查看>>
BZOJ 1004 [HNOI2008]Cards
查看>>
[POJ 2689] Prime Distance
查看>>
[ 原创 ] Linux下查找指定类型文件以及删除
查看>>
win10环境下jdk1.8+Android Developer Tools Build: v22.3.0-887826的问题
查看>>
辗转相除法求最大公约数
查看>>
Centos7 安装mysql5.7.16
查看>>
java串口通信与打卡器交互
查看>>
<CoreJava> 5.2 Object:所有类的超类
查看>>
输入年月日计算是星期几
查看>>
redis部分配置与报错解决
查看>>
Python Challenge(0-8)
查看>>
oracle中的trunc()函数
查看>>
对大一一年的总结和对大二的规划
查看>>