扩展jQuery easyui datagrid动态改变列的位置

在js中加入

//扩展jQuery easyui datagrid动态改变列的位置
$.extend($.fn.datagrid.methods,{
    columnMoving: function(jq){
        return jq.each(function(){
            var target = this;
            var cells = $(this).datagrid('getPanel').find('div.datagrid-header td[field]');
            cells.draggable({
                revert:true,
                cursor:'pointer',
                edge:5,
                proxy:function(source){
                    var p = $('<div class="tree-node-proxy tree-dnd-no" style="position:absolute;border:1px solid #ff0000"/>').appendTo('body');
                    p.html($(source).text());
                    p.hide();
                    return p;
                },
                onBeforeDrag:function(e){
                    e.data.startLeft = $(this).offset().left;
                    e.data.startTop = $(this).offset().top;
                },
                onStartDrag: function(){
                    $(this).draggable('proxy').css({
                        left:-10000,
                        top:-10000
                    });
                },
                onDrag:function(e){
                    $(this).draggable('proxy').show().css({
                        left:e.pageX+15,
                        top:e.pageY+15
                    });
                    return false;
                }
            }).droppable({
                accept:'td[field]',
                onDragOver:function(e,source){
                    $(source).draggable('proxy').removeClass('tree-dnd-no').addClass('tree-dnd-yes');
                    $(this).css('border-left','1px solid #ff0000');
                },
                onDragLeave:function(e,source){
                    $(source).draggable('proxy').removeClass('tree-dnd-yes').addClass('tree-dnd-no');
                    $(this).css('border-left',0);
                },
                onDrop:function(e,source){
                    $(this).css('border-left',0);
                    var fromField = $(source).attr('field');
                    var toField = $(this).attr('field');
                    setTimeout(function(){
                        swapField(fromField,toField);
                        $(target).datagrid();
                        $(target).datagrid('columnMoving');
                    },0);
                }
            });
            
            // swap Field to another location
            function swapField(from,to){
                var columns = $(target).datagrid('options').columns;
                var cc = columns[0];
                _swap(from,to);
                function _swap(fromfiled,tofiled){
                    var fromtemp;
                    var totemp;
                    var fromindex = 0;
                    var toindex = 0;
                    for(var i=0; i<cc.length; i++){
                        if (cc[i].field == fromfiled){
                            fromindex = i;
                            fromtemp = cc[i];
                        }
                        if(cc[i].field == tofiled){
                            toindex = i;
                            totemp = cc[i];
                        }
                    }
                    cc.splice(fromindex,1,totemp);
                    cc.splice(toindex,1,fromtemp);
                }
            }
        });
    }
});

然后在创建datagrid的时候加入.datagrid(“columnMoving”);

$('#'+id).datagrid({.....}).datagrid("columnMoving");  

我项目中封装的js

//----------------------------------myJsTool Extent easyUi 扩展方法------------------------------------
//提醒消息
myJsTool.prototype.alert    = function (message,title,fn){$.messager.alert(title||'消息',message,null,fn);}
myJsTool.prototype.error    = function (message,title,fn){$.messager.alert(title||'错误',message,'error',fn);}
myJsTool.prototype.info     = function (message,title,fn){$.messager.alert(title||'消息',message,'info',fn);}
myJsTool.prototype.question = function (message,title,fn){$.messager.alert(title||'问题',message,'question',fn);}
myJsTool.prototype.warning  = function (message,title,fn){$.messager.alert(title||'警告',message,'warning',fn);}
myJsTool.prototype.prompt   = function (message,title,fn){$.messager.prompt(title||'输入',message,fn);}
myJsTool.prototype.confirm  = function (message,title,fn){$.messager.confirm(title||'确认',message,fn);}
myJsTool.prototype.showTip  = function (message,showSpeed,iWidth,iHeight)
{	iWidth = iWidth || 180; iHeight= iHeight || 60;
	$.messager.show({showType:'fade',showSpeed:showSpeed||1200,msg:'<font color=red>'+message+'</font>', 
	width:iWidth,height:iHeight,timeout:0.5,
	style:{right:'',top:top.document.body.scrollTop+top.document.documentElement.scrollTop+(top.document.body.clientHeight-400)/2,bottom:''}});} 
myJsTool.prototype.showMsg  = function (message,title,showSpeed)
{$.messager.show({showType:'slide',showSpeed:showSpeed||1000,msg:message,width:280,height:130,title:title||'消息',timeout:0});}
myJsTool.prototype.toolTip  = function (message){	
	if(top.$('#toolTip')[0]==null){top.$("body").eq(0).append("<div id=\"toolTip\"></div>");}
	top.$('#toolTip').tooltip({
		position: 'right',
		deltaX:500,
		deltaY:500,
		content: '<span style="color:#fff">'+message+'</span>',
		onShow: function(){$(this).tooltip('tip').css({backgroundColor: '#666',borderColor: '#666'});    }
	});
	top.$('#toolTip').show();
}
//未知错误处理(异步请求时使用)
myJsTool.prototype.unknownError   = function (message,refresh){
	var ee = "未知错误,请联系管理员!";
	try{
		if(message!=null && message.indexOf("errorMsg")>-1){
			$("body").append("<div id='__ErrorMsgDiv' style='display: none;' >"+message+"</div>");
			ee = $('#__ErrorMsgDiv').text();
			$('#__ErrorMsgDiv')[0].outerHTML="";
			if(ee==null || ee=="") ee = "未知错误,请联系管理员!";
		}
	}catch(e){}
	this.error(ee,null,function(){
		if(refresh){location.reload();}
	});
}
//解析方法,数据解析到form中
myJsTool.prototype.parse = function (formId,data,objId,noClear){
	var objval = new Object();
	objId = objId || formId;
	objval = data[objId];
	if((noClear==true)==false){
		$('#'+formId).form('clear');
	}
	$('#'+formId).form('load',objval);
}

//扩展jQuery easyui datagrid动态改变列的位置
$.extend($.fn.datagrid.methods,{
    columnMoving: function(jq){
        return jq.each(function(){
            var target = this;
            var cells = $(this).datagrid('getPanel').find('div.datagrid-header td[field]');
            cells.draggable({
                revert:true,
                cursor:'pointer',
                edge:5,
                proxy:function(source){
                    var p = $('<div class="tree-node-proxy tree-dnd-no" style="position:absolute;border:1px solid #ff0000"/>').appendTo('body');
                    p.html($(source).text());
                    p.hide();
                    return p;
                },
                onBeforeDrag:function(e){
                    e.data.startLeft = $(this).offset().left;
                    e.data.startTop = $(this).offset().top;
                },
                onStartDrag: function(){
                    $(this).draggable('proxy').css({
                        left:-10000,
                        top:-10000
                    });
                },
                onDrag:function(e){
                    $(this).draggable('proxy').show().css({
                        left:e.pageX+15,
                        top:e.pageY+15
                    });
                    return false;
                }
            }).droppable({
                accept:'td[field]',
                onDragOver:function(e,source){
                    $(source).draggable('proxy').removeClass('tree-dnd-no').addClass('tree-dnd-yes');
                    $(this).css('border-left','1px solid #ff0000');
                },
                onDragLeave:function(e,source){
                    $(source).draggable('proxy').removeClass('tree-dnd-yes').addClass('tree-dnd-no');
                    $(this).css('border-left',0);
                },
                onDrop:function(e,source){
                    $(this).css('border-left',0);
                    var fromField = $(source).attr('field');
                    var toField = $(this).attr('field');
                    setTimeout(function(){
                        swapField(fromField,toField);
                        $(target).datagrid();
                        $(target).datagrid('columnMoving');
                    },0);
                }
            });
            
            // swap Field to another location
            function swapField(from,to){
                var columns = $(target).datagrid('options').columns;
                var cc = columns[0];
                _swap(from,to);
                function _swap(fromfiled,tofiled){
                    var fromtemp;
                    var totemp;
                    var fromindex = 0;
                    var toindex = 0;
                    for(var i=0; i<cc.length; i++){
                        if (cc[i].field == fromfiled){
                            fromindex = i;
                            fromtemp = cc[i];
                        }
                        if(cc[i].field == tofiled){
                            toindex = i;
                            totemp = cc[i];
                        }
                    }
                    cc.splice(fromindex,1,totemp);
                    cc.splice(toindex,1,fromtemp);
                }
            }
        });
    }
});

//创建grid面板
myJsTool.prototype.createGrid=function(panelid,panelConfig,panelcolumns){
	var grid;
	var pageList = [15,30,45,60,100,300,500,1000];
    if(panelConfig.pageSize){
    	eval("var pageList = panelConfig.pageList;");
    }
    var exportRows=[];
    var exportFields=[];
    var toolbar=panelConfig.toolbar;
    // 默认添加序号
    var xh = (panelConfig.columnsXh==undefined)?true:panelConfig.columnsXh
    if (xh==true) {
    	var xhColumn = {field:'xh',title:'序号',width:50,align:'center',formatter:function(val,row,index){
		     return index+1;
		}}
    	var columns = panelcolumns[0];
    	var haveXh = false;
    	var ckIndex = 1;
    	var xhIndex = 0;
    	if (columns!=undefined) {
    		for (var i=0,len=columns.length;i<len;i++) {
        		var column = columns[i];
        		if (column!=undefined) {
        			var title= column["title"];
            		var field= column["field"];
            		var hidden = column["hidden"];
            		var checkbox= column["checkbox"];;
            		if (title=='序号') {
            			haveXh = true;
            			//column['width']="50";
            			//column['align']="center";
            			//xhIndex = i;
            		} else {
            			if (hidden!=true&&checkbox!=true) {
                			exportRows.push(title);
                			exportFields.push(field);
                		}
            			if (checkbox==true) {
            				ckIndex = i+1;
            			}
            		}
        		}
        	}
        	if (haveXh==false) {
        		columns.splice(ckIndex,0,xhColumn);
        	}
    	}
    }
    //默认添加导出文件功能
    var exportFlag = (panelConfig.exportFlag==undefined)?false:panelConfig.exportFlag
    if (exportFlag==true) {
    	var exportTitle = (panelConfig.exportTitle==undefined)?"":panelConfig.exportTitle;
        var exportExcel = {
    			iconCls: 'icon-print',
    			text   : '导出excel',
    			handler: function(){
    				var exportGrid = grid;
    				var shSql= exportGrid.datagrid("getData").shSql;
    				var dictTranslateMap= exportGrid.datagrid("getData").dictTranslateMap;
    				dictTranslateMap=(dictTranslateMap==undefined?{}:dictTranslateMap);
    				var listTranslateMap= exportGrid.datagrid("getData").listTranslateMap;
    				listTranslateMap=(listTranslateMap==undefined?{}:listTranslateMap);
    				var translateStrategy = exportGrid.datagrid("getData").translateStrategy;
    				translateStrategy=(translateStrategy==undefined?"":translateStrategy);
    				var params = exportGrid.datagrid("getData").params;
    				params=(params==undefined?"":params);
    				var mj = new myJsTool();
    				AjaxLoading();
    				var data = {};
    				data["shSql"]=shSql;
    				data["dictTranslateMap"]=dictTranslateMap;
    				data["listTranslateMap"]=listTranslateMap;
    				//其它字段转化策略,需后台自定义开发。
    				data["translateStrategy"]=translateStrategy;
    				data["params"]=params;
    				data["exportRows"]=exportRows;
    				data["exportFields"]=exportFields;
    				data["exportTitle"]=exportTitle;
    				mj.Ajax(appName + "/ssfwpt/export/exportExcel",{"data":JSON.stringify(data)},
    					function(data){
    					    var success = data.success;
    						if (success==true) {
        					    window.location.href=appName+"/uploadfile/imgAndFiles/"+data.filename;
    						}
    				    	mj.showTip(data.msg);
    				    	AjaxLoadEnd();
    					}
    				);
    			}
    	};
        if (toolbar==undefined) {
        	toolbar=[];
        }
        toolbar.push('-');
        toolbar.push(exportExcel);
    }
	grid  = $("#"+panelid).datagrid({
		width:panelConfig.width?'auto':panelConfig.width,
		height:panelConfig.height?'auto':panelConfig.height,
		rownumbers:panelConfig.rownumbers,      //行号 true,false
		singleSelect:panelConfig.singleSelect, //只能选择一行 true,false
		ctrlSelect:true,                    //在启用多行选择的时候允许使用Ctrl键+鼠标点击的方式进行多选操作
		
		pageNumber:1, 						//初始页码 
		pageSize:panelConfig.pageSize?panelConfig.pageSize:15,  //在设置分页属性的时候初始化页面大小
		pageList:pageList,  		//在设置分页属性的时候 初始化页面大小选择列表
		
		toolbar:toolbar,  		//tbar
		fit:(panelConfig.fit==undefined)?false:panelConfig.fit,
		pagination:(panelConfig.pagination==undefined)?true:panelConfig.pagination, //分页
		pagePosition:(panelConfig.pagePosition==undefined)?'bottom':panelConfig.pagePosition, //分页位置
		columns:panelcolumns,
		onSelect:panelConfig.onSelect,
		onLoadSuccess:panelConfig.onLoadSuccess,
		onLoadError:panelConfig.onLoadError,
		onDblClickRow:panelConfig.onDblClickRow,
		onClickRow:panelConfig.onClickRow,
		title:panelConfig.title,
		idField: panelConfig.idField
	}).datagrid("columnMoving");
	grid.init = function (pUrl,queryParams){
		grid.pUrl = pUrl;
		grid.queryParams = queryParams;
		this.reload(); 
		//grid.datagrid('tooltip',{'FILENAME'});   
	};
	grid.reload = function(){
		grid.datagrid('options').url=grid.pUrl;   
		grid.datagrid('options').queryParams = grid.queryParams;
        /*
        for( var key in queryParams){   
            for(var _key  in  this.queryParamsVCN){ 
                if(key==_key){   
                    queryParams[key]=encodeURIComponent($("#"+this.queryParamsVCN[_key]).val()); 
                } 
            } 
        } 
        **/
		grid.datagrid('reload'); 
	};
	grid.getSelections= function(){ 
        return  $('#'+this.gridId).datagrid('getSelections'); 
    }; 
    grid.getSelected= function(){ 
    	return  $('#'+this.gridId).datagrid('getSelected'); 
    }; 
    grid.clear= function(){ 
      $('#'+this.gridId).datagrid("clearSelections");
    }; 
    grid.unselectRow= function(index){ 
      $('#'+this.gridId).datagrid("unselectRow",index);  
    };
    grid.selectRecord= function(idv){ 
       return $('#'+this.gridId).datagrid("selectRecord",idv);   
    }; 
    grid.selectRow=function(index){ 
       return $('#'+this.gridId).datagrid("selectRow",index);    
    }; 
    grid.initPagination=function(){  
        var pager=$('#'+this.gridId).datagrid('getPager') 
        pager.pagination({ 
            onSelectPage:function(page,rows){ 
        		grid.reload(); 
            } 
        }); 
    }; 
    grid.resize=function(_width,_height){  
       $('#'+this.gridId).datagrid("resize",{width:_width});     
    }; 
    grid.doSearch=function(){ 
        this.reload(); 
    }; 
    grid.moveTreeReload=function(){ 
        $('#'+this.moveTreeId).combotree("reload"); 
    }; 
    grid.getMoveTreeVal=function(){ 
        return  $('#'+this.moveTreeId).combotree('getValue'); 
    }; 
    grid.getMoveSelectedIds=function(){ 
        return  $('#'+this.moveSelectedId).val(); 
    }; 
    grid.getMoveParentId=function(){ 
        return  $('#'+this.moveParentId).val(); 
    };
    grid.initInfoDlg=function(){ 
        $('#'+this.infoFormId).css("display","block"); 
        $('#'+this.infoDlgDivId).dialog({ 
                resizable:false, 
                collapsible:true, 
                modal:true, 
                buttons:[{ 
                    text:'确定', 
                    iconCls:'icon-ok', 
                    handler:function(){  
                        if(myDatagridObj.addOrUpdateFlag==0) 
                            myDatagridObj.doAdd(); 
                        else if(myDatagridObj.addOrUpdateFlag==1) 
                            myDatagridObj.doUpdate(); 
                    } 
                },{ 
                    text:'关闭', 
                    iconCls:'icon-cancel', 
                    handler:function(){ 
                        myDatagridObj.closeInfoDlg(); 
                    } 
                }] 
 
        }); 
    }; 
    grid.initMoveDlg=function(){ 
        $('#'+this.moveFormId).css("display","block"); 
        $('#'+this.moveDlgDivId).dialog({ 
                resizable:false, 
                collapsible:true, 
                modal:true, 
                buttons:[{ 
                    text:'确定', 
                    iconCls:'icon-ok', 
                    handler:function(){ 
                        myDatagridObj.doMove(); 
                    } 
                },{ 
                    text:'关闭', 
                    iconCls:'icon-cancel', 
                    handler:function(){ 
                        myDatagridObj.closeMoveDlg(); 
                    } 
                }] 
 
        }); 
        $('#'+this.moveFormId).append("<input type='hidden' name='"+this.moveSelectedId+"'  id='"+this.moveSelectedId+"' />"); 
        $('#'+this.moveFormId).append("<input type='hidden' name='"+this.moveParentId+"'  id='"+this.moveParentId+"' />"); 
    }; 
    grid.showInfoDlg=function(){ 
        $('#'+this.infoDlgDivId).dialog("open"); 
    }; 
    grid.closeInfoDlg=function(){ 
        $('#'+this.infoDlgDivId).dialog("close"); 
    }; 
    grid.showMoveDlg=function(){ 
        $('#'+this.moveDlgDivId).dialog("open");     
    }; 
    grid.closeMoveDlg=function(){ 
        $('#'+this.moveDlgDivId).dialog("close");    
    }; 
    grid.toAdd=function(){ 
        this.addOrUpdateFlag=0; 
        if(!this.beforeAddFn()) return; 
        this.showInfoDlg(); 
    }; 
    grid.toDetail=function(){ 
        if(!this.beforeDetailFn()) return; 
        this.showInfoDlg(); 
    }; 
    grid.toUpdate=function(){ 
       this.addOrUpdateFlag=1; 
       var tmp =this.datagridSelected(); 
       if(tmp==null){ 
           $.messager.alert('系统提示','<br>请选择您要修改的记录。','info'); 
           return; 
       } 
       if(!this.beforeUpdateFn()) return; 
       this.showInfoDlg(); 
    };
    grid.toMove=function(){ 
        var tmp =this.datagridSelections();  
        if(tmp.length<=0){ 
            $.messager.alert('系统提示','<br>请选择您要转移的记录。','info'); 
            return; 
        } 
        
        if(!this.beforeMoveFn()) return; 
        this.showMoveDlg(); 
    };
    grid.doAdd=function(){
        var form = $("#"+this.infoFormId), action = form.attr('action');
        form.attr("action",this.parseAction(this.infoAddAction || action)); 
        form.form('submit',{ 
            onSubmit: function(){   
                if(grid.beforeDoAddFn && !grid.beforeDoAddFn()) return; 
                return $(this).form('validate'); 
            },    
            success:function(data){
            	try {
            		data = $.parseJSON(data);
            		if (data.success) {
            			myJs.showTip((data.msg || '保存成功!'));
            			grid.closeInfoDlg && grid.closeInfoDlg();
            			grid.clearSelections && grid.clearSelections();
            			grid.datagridReload && grid.datagridReload();
            			grid.afterUpdateFn && grid.afterUpdateFn(data);
            		} else {
            			myJs.showTip(data.msg || '保存失败。');
            		} 
            	} catch (e) {
            		$.messager.alert('系统提示', data, 'error');
            	}
            } 
        }); 
         
    };
    grid.doUpdate=function(){ 
        $("#"+this.infoFormId).attr("action",this.parseAction(this.infoUpdateAction)); 
        $('#'+this.infoFormId).form('submit',{ 
            onSubmit: function(){   
                if(grid.beforeDoUpdateFn && !grid.beforeDoUpdateFn()) return; 
                return $(this).form('validate'); 
            },    
            success:function(data){
            	try {
	            	data = $.parseJSON(data);
	                if(data.success){
	                	myJs.showTip((data.msg || '保存成功!'));
	                   grid.closeInfoDlg();
	                   grid.clearSelections();
	                   grid.datagridReload();
	                   grid.afterUpdateFn();
	                }else{
            			myJs.showTip((data.msg || '修改失败。'));
	                }
	            } catch (e) {
	        		$.messager.alert('系统提示', data, 'error');
	        	}
            } 
        }); 
         
    };
    grid.doDelete=function(){ 
        if(!this.beforeDeleteFn()) return; 
         
        var tmp =this.datagridSelections(); 
        if(tmp.length<=0){ 
            $.messager.alert('系统提示','<br>请选择您要删除的记录。','info'); 
            return; 
        } 
        $.messager.confirm('系统提示', '<br>真的需要删除这些数据吗?<br>'+ this.deleteMsg, function(r){ 
            if (r){ 
                var ids=""; 
                for(var i=0;i<tmp.length;i++){ 
                   if(ids=="") 
                       ids=(tmp[i]) .id; 
                   else 
                       ids+=","+(tmp[i]).id; 
                } 
                $.ajax({ 
                    type: "POST", 
                    data:{"ids":ids}, 
                    url:myDatagridObj.parseAction(myDatagridObj.deleteAction),  
                    success:function(data){ 
                        if(data.Trim()=="success"){  
                           //$.messager.alert('系统提示','<br>删除成功。','info');  
                           myDatagridObj.clearSelections(); 
                           myDatagridObj.datagridReload(); 
                           myDatagridObj.afterDeleteFn(); 
                        }else{ 
                           $.messager.alert('系统提示','<br>删除失败。','info');    
                        } 
                    } 
                 }); 
 
            } 
        }); 
    }; 
    grid.doMove=function(){ 
        var s="sdf"; 
        $('#'+this.moveFormId).form('submit',{ 
            onSubmit: function(){   
                 
                var val =  myDatagridObj.getMoveTreeVal();  
                if(val==""){ 
                    $.messager.alert('系统提示','<br>请选择需要转向的父类。','info');     
                    return false; 
                } 
                 
                var tmp=myDatagridObj.datagridSelections(); 
                var ids=""; 
                for(var i=0;i<tmp.length;i++){ 
                   if( ((tmp[i]).id)!=val){ 
                      if(ids=="") 
                         ids=(tmp[i]).id; 
                      else 
                         ids+=","+(tmp[i]).id; 
                   } 
                } 
                $("#"+myDatagridObj.moveSelectedId).val(ids); 
                $("#"+myDatagridObj.moveParentId).val(val); 
                if(!myDatagridObj.beforeDoMoveFn()) return; 
                return $(this).form('validate'); 
            },    
            success:function(data){  
                if(data.Trim()=="success"){  
                   //$.messager.alert('系统提示','<br>转移成功。','info'); 
                   myDatagridObj.clearSelections(); 
                   myDatagridObj.closeMoveDlg(); 
                   myDatagridObj.datagridReload(); 
                   myDatagridObj.moveTreeReload(); 
                   myDatagridObj.afterMoveFn(); 
                   
                }else{  
                   $.messager.alert('系统提示','<br>转移失败。','info');    
                } 
            } 
        }); 
    }; 
    grid.parseAction=function(action){ 
        if(action.indexOf('?')>=0) 
          return action+="&xxtime="+(new Date().getTime()); 
        else 
          return action+="?xxtime="+(new Date().getTime()); 
    };
    
	grid.gridId = panelid;
	grid.oThis = this;
	return grid;
}





myJsTool.prototype.createTjGrid=function(panelid,panelConfig,panelcolumns){
	var grid  = $("#"+panelid).datagrid({
		width:panelConfig.width?'auto':panelConfig.width,
		height:panelConfig.height?'auto':panelConfig.height,
		rownumbers:panelConfig.rownumbers,      //行号 true,false
		singleSelect:panelConfig.singleSelect, //只能选择一行 true,false
		ctrlSelect:true,                    //在启用多行选择的时候允许使用Ctrl键+鼠标点击的方式进行多选操作
		
		//pageNumber:1, 						//初始页码 
		//pageSize:15,  						//在设置分页属性的时候初始化页面大小
		//pageList:[15,30,45,60,100],  		//在设置分页属性的时候 初始化页面大小选择列表
		
		toolbar:panelConfig.toolbar,  		//tbar
		fit:(panelConfig.fit==undefined)?false:panelConfig.fit,
		//pagination:(panelConfig.pagination==undefined)?true:panelConfig.pagination, //分页
		//pagePosition:(panelConfig.pagePosition==undefined)?'bottom':panelConfig.pagePosition, //分页位置
		columns:panelcolumns,
		onSelect:panelConfig.onSelect
	});
	grid.init = function (pUrl,queryParams){
		grid.pUrl = pUrl;
		grid.queryParams = queryParams;
		this.reload(); 
		//grid.datagrid('tooltip',{'FILENAME'});   
	};
	grid.reload = function(){
		grid.datagrid('options').url=grid.pUrl;   
		grid.datagrid('options').queryParams = grid.queryParams;
        /*
        for( var key in queryParams){   
            for(var _key  in  this.queryParamsVCN){ 
                if(key==_key){   
                    queryParams[key]=encodeURIComponent($("#"+this.queryParamsVCN[_key]).val()); 
                } 
            } 
        } 
        **/
		grid.datagrid('reload'); 
	};
	grid.getSelections= function(){ 
        return  $('#'+this.gridId).datagrid('getSelections'); 
    }; 
    grid.getSelected= function(){ 
    	return  $('#'+this.gridId).datagrid('getSelected'); 
    }; 
    grid.clear= function(){ 
      $('#'+this.gridId).datagrid("clearSelections");
    }; 
    grid.unselectRow= function(index){ 
      $('#'+this.gridId).datagrid("unselectRow",index);  
    };
    grid.selectRecord= function(idv){ 
       return $('#'+this.gridId).datagrid("selectRecord",idv);   
    }; 
    grid.selectRow=function(index){ 
       return $('#'+this.gridId).datagrid("selectRow",index);    
    }; 
    grid.initPagination=function(){  
        var pager=$('#'+this.gridId).datagrid('getPager') 
        pager.pagination({ 
            onSelectPage:function(page,rows){ 
        		grid.reload(); 
            } 
        }); 
    }; 
    grid.resize=function(_width,_height){  
       $('#'+this.gridId).datagrid("resize",{width:_width});     
    }; 
    grid.doSearch=function(){ 
        this.reload(); 
    }; 
    grid.moveTreeReload=function(){ 
        $('#'+this.moveTreeId).combotree("reload"); 
    }; 
    grid.getMoveTreeVal=function(){ 
        return  $('#'+this.moveTreeId).combotree('getValue'); 
    }; 
    grid.getMoveSelectedIds=function(){ 
        return  $('#'+this.moveSelectedId).val(); 
    }; 
    grid.getMoveParentId=function(){ 
        return  $('#'+this.moveParentId).val(); 
    };
    grid.initInfoDlg=function(){ 
        $('#'+this.infoFormId).css("display","block"); 
        $('#'+this.infoDlgDivId).dialog({ 
                resizable:false, 
                collapsible:true, 
                modal:true, 
                buttons:[{ 
                    text:'确定', 
                    iconCls:'icon-ok', 
                    handler:function(){  
                        if(myDatagridObj.addOrUpdateFlag==0) 
                            myDatagridObj.doAdd(); 
                        else if(myDatagridObj.addOrUpdateFlag==1) 
                            myDatagridObj.doUpdate(); 
                    } 
                },{ 
                    text:'关闭', 
                    iconCls:'icon-cancel', 
                    handler:function(){ 
                        myDatagridObj.closeInfoDlg(); 
                    } 
                }] 
 
        }); 
    }; 
    grid.initMoveDlg=function(){ 
        $('#'+this.moveFormId).css("display","block"); 
        $('#'+this.moveDlgDivId).dialog({ 
                resizable:false, 
                collapsible:true, 
                modal:true, 
                buttons:[{ 
                    text:'确定', 
                    iconCls:'icon-ok', 
                    handler:function(){ 
                        myDatagridObj.doMove(); 
                    } 
                },{ 
                    text:'关闭', 
                    iconCls:'icon-cancel', 
                    handler:function(){ 
                        myDatagridObj.closeMoveDlg(); 
                    } 
                }] 
 
        }); 
        $('#'+this.moveFormId).append("<input type='hidden' name='"+this.moveSelectedId+"'  id='"+this.moveSelectedId+"' />"); 
        $('#'+this.moveFormId).append("<input type='hidden' name='"+this.moveParentId+"'  id='"+this.moveParentId+"' />"); 
    }; 
    grid.showInfoDlg=function(){ 
        $('#'+this.infoDlgDivId).dialog("open"); 
    }; 
    grid.closeInfoDlg=function(){ 
        $('#'+this.infoDlgDivId).dialog("close"); 
    }; 
    grid.showMoveDlg=function(){ 
        $('#'+this.moveDlgDivId).dialog("open");     
    }; 
    grid.closeMoveDlg=function(){ 
        $('#'+this.moveDlgDivId).dialog("close");    
    }; 
    grid.toAdd=function(){ 
        this.addOrUpdateFlag=0; 
        if(!this.beforeAddFn()) return; 
        this.showInfoDlg(); 
    }; 
    grid.toDetail=function(){ 
        if(!this.beforeDetailFn()) return; 
        this.showInfoDlg(); 
    }; 
    grid.toUpdate=function(){ 
       this.addOrUpdateFlag=1; 
       var tmp =this.datagridSelected(); 
       if(tmp==null){ 
           $.messager.alert('系统提示','<br>请选择您要修改的记录。','info'); 
           return; 
       } 
       if(!this.beforeUpdateFn()) return; 
       this.showInfoDlg(); 
    };
    grid.toMove=function(){ 
        var tmp =this.datagridSelections();  
        if(tmp.length<=0){ 
            $.messager.alert('系统提示','<br>请选择您要转移的记录。','info'); 
            return; 
        } 
        
        if(!this.beforeMoveFn()) return; 
        this.showMoveDlg(); 
    };
    grid.doAdd=function(){ 
        $("#"+this.infoFormId).attr("action",this.parseAction(this.infoAddAction)); 
        $('#'+this.infoFormId).form('submit',{ 
            onSubmit: function(){   
                if(!myDatagridObj.beforeDoAddFn()) return; 
                return $(this).form('validate'); 
            },    
            success:function(data){  
                if(data.Trim()=="success"){  
                   //$.messager.alert('系统提示','<br>增加成功。','info'); 
                   myDatagridObj.closeInfoDlg(); 
                   myDatagridObj.datagridReload(); 
                   myDatagridObj.afterDoAddFn();  
                }else{ 
                   $.messager.alert('系统提示','<br>增加失败。','info');    
                } 
            } 
        }); 
         
    };
    grid.doUpdate=function(){ 
        $("#"+this.infoFormId).attr("action",this.parseAction(this.infoUpdateAction)); 
        $('#'+this.infoFormId).form('submit',{ 
            onSubmit: function(){   
                if(!myDatagridObj.beforeDoUpdateFn()) return; 
                return $(this).form('validate'); 
            },    
            success:function(data){  
                if(data.Trim()=="success"){  
                   //$.messager.alert('系统提示','<br>修改成功。','info'); 
                   myDatagridObj.closeInfoDlg(); 
                   myDatagridObj.clearSelections(); 
                   myDatagridObj.datagridReload(); 
                   myDatagridObj.afterUpdateFn(); 
                }else{ 
                   $.messager.alert('系统提示','<br>修改失败。','info');    
                } 
            } 
        }); 
         
    };
    grid.doDelete=function(){ 
        if(!this.beforeDeleteFn()) return; 
         
        var tmp =this.datagridSelections(); 
        if(tmp.length<=0){ 
            $.messager.alert('系统提示','<br>请选择您要删除的记录。','info'); 
            return; 
        } 
        $.messager.confirm('系统提示', '<br>真的需要删除这些数据吗?<br>'+ this.deleteMsg, function(r){ 
            if (r){ 
                var ids=""; 
                for(var i=0;i<tmp.length;i++){ 
                   if(ids=="") 
                       ids=(tmp[i]) .id; 
                   else 
                       ids+=","+(tmp[i]).id; 
                } 
                $.ajax({ 
                    type: "POST", 
                    data:{"ids":ids}, 
                    url:myDatagridObj.parseAction(myDatagridObj.deleteAction),  
                    success:function(data){ 
                        if(data.Trim()=="success"){  
                           //$.messager.alert('系统提示','<br>删除成功。','info');  
                           myDatagridObj.clearSelections(); 
                           myDatagridObj.datagridReload(); 
                           myDatagridObj.afterDeleteFn(); 
                        }else{ 
                           $.messager.alert('系统提示','<br>删除失败。','info');    
                        } 
                    } 
                 }); 
 
            } 
        }); 
    }; 
    grid.doMove=function(){ 
        var s="sdf"; 
        $('#'+this.moveFormId).form('submit',{ 
            onSubmit: function(){   
                 
                var val =  myDatagridObj.getMoveTreeVal();  
                if(val==""){ 
                    $.messager.alert('系统提示','<br>请选择需要转向的父类。','info');     
                    return false; 
                } 
                 
                var tmp=myDatagridObj.datagridSelections(); 
                var ids=""; 
                for(var i=0;i<tmp.length;i++){ 
                   if( ((tmp[i]).id)!=val){ 
                      if(ids=="") 
                         ids=(tmp[i]).id; 
                      else 
                         ids+=","+(tmp[i]).id; 
                   } 
                } 
                $("#"+myDatagridObj.moveSelectedId).val(ids); 
                $("#"+myDatagridObj.moveParentId).val(val); 
                if(!myDatagridObj.beforeDoMoveFn()) return; 
                return $(this).form('validate'); 
            },    
            success:function(data){  
                if(data.Trim()=="success"){  
                   //$.messager.alert('系统提示','<br>转移成功。','info'); 
                   myDatagridObj.clearSelections(); 
                   myDatagridObj.closeMoveDlg(); 
                   myDatagridObj.datagridReload(); 
                   myDatagridObj.moveTreeReload(); 
                   myDatagridObj.afterMoveFn(); 
                   
                }else{  
                   $.messager.alert('系统提示','<br>转移失败。','info');    
                } 
            } 
        }); 
    }; 
    grid.parseAction=function(action){ 
        if(action.indexOf('?')>=0) 
          return action+="&xxtime="+(new Date().getTime()); 
        else 
          return action+="?xxtime="+(new Date().getTime()); 
    };
    
	grid.gridId = panelid;
	grid.oThis = this;
	return grid;
}
//表单验证param formId 表单ID
myJsTool.prototype.validate = function(form,msg){
	var flag = form.form('validate'); 
	if(msg!=null && msg.length>0 && flag==false){
		this.error(msg);
	}
	return flag;
}


//-------------------------------下面是扩展验证start------------------------//
$.extend($.fn.validatebox.defaults.rules, {
	idcard : {// 验证身份证 
		validator : function(value) { 
			return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value); 
		}, 
		message : '身份证号码格式不正确' 
	},
	minLength: {
		validator: function(value, param){
			return value.length >= param[0];
		},
		message: '请输入至少(2)个字符.'
	},
	maxLength: {
		validator: function(value, param){
			return value.length <= param[0];
		},
		message: '请输入最多(2)个字符.'
	},
	length:{
		validator:function(value,param){ 
			var len=$.trim(value).length; 
			return len>=param[0]&&len<=param[1]; 
		}, 
		message:"输入内容长度必须介于{0}和{1}之间." 
	}, 
	phone : {// 验证电话号码 
		validator : function(value) { 
			return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value); 
		}, 
		message : '格式不正确,请使用下面格式:020-88888888' 
	}, 
	mobile : {// 验证手机号码 
		validator : function(value) { 
			return /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(value); 
		}, 
		message : '手机号码格式不正确' 
	}, 
	intOrFloat : {// 验证整数或小数 
		validator : function(value) { 
			return /^\d+(\.\d+)?$/i.test(value); 
		}, 
		message : '请输入数字,并确保格式正确' 
	}, 
	currency : {// 验证货币 
		validator : function(value) { 
			return /^\d+(\.\d+)?$/i.test(value); 
		}, 
		message : '货币格式不正确' 
	}, 
    qq : {// 验证QQ,从10000开始 
        validator : function(value) { 
            return /^[1-9]\d{4,9}$/i.test(value); 
        }, 
        message : 'QQ号码格式不正确' 
    }, 
    integer : {// 验证整数 
        validator : function(value) { 
            return /^[+]?[1-9]+\d*$/i.test(value); 
        }, 
        message : '请输入整数' 
    }, 
    age : {// 验证年龄
        validator : function(value) { 
            return /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i.test(value); 
        }, 
        message : '年龄必须是0到120之间的整数' 
    }, 
    
    chinese : {// 验证中文 
        validator : function(value) { 
            return /^[-\¥]+$/i.test(value); 
        }, 
        message : '请输入中文' 
    }, 
    english : {// 验证英语 
        validator : function(value) { 
            return /^[A-Za-z]+$/i.test(value); 
        }, 
        message : '请输入英文' 
    }, 
    unnormal : {// 验证是否包含空格和非法字符 
        validator : function(value) { 
            return /.+/i.test(value); 
        }, 
        message : '输入值不能为空和包含其他非法字符' 
    }, 
    username : {// 验证用户名 
        validator : function(value) { 
            return /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value); 
        }, 
        message : '用户名不合法(字母开头,允许6-16字节,允许字母数字下划线)' 
    }, 
    faxno : {// 验证传真 
        validator : function(value) { 
    		//return /^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/i.test(value); 
            return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value); 
        }, 
        message : '传真号码不正确' 
    }, 
    zip : {// 验证邮政编码 
        validator : function(value) { 
            return /^[1-9]\d{5}$/i.test(value); 
        }, 
        message : '邮政编码格式不正确' 
    }, 
    ip : {// 验证IP地址 
        validator : function(value) { 
            return /d+.d+.d+.d+/i.test(value); 
        }, 
        message : 'IP地址格式不正确' 
    }, 
    name : {// 验证姓名,可以是中文或英文 
            validator : function(value) { 
                return /^[-\¥]+$/i.test(value)|/^\w+[\w\s]+\w+$/i.test(value); 
            }, 
            message : '请输入姓名' 
    },
    date : {// 验证日期 
        validator : function(value) { 
         //格式yyyy-MM-dd或yyyy-M-d
            return /^(?:(?!0000)[0-9]{4}([-]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-]?)0?2\2(?:29))$/i.test(value); 
        },
        message : '请输入合适的日期格式'
    },
    msn:{ 
        validator : function(value){ 
        return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value); 
    }, 
    	message : '请输入有效的msn账号(例:abc@hotnail(msn/live).com)' 
    },
    equalTo: { 
    validator : function(value, param){ 
    	if($("#"+param[0]).val() != "" && value != ""){ 
            return $("#"+param[0]).val() == value; 
        }else{ 
            return true; 
        } 
    }, 
    message : '两次输入的密码不一致!'    
} 
});

/**
*$("#dg").datagrid({....}).datagrid('tooltip'); 所有列
*$("#dg").datagrid({....}).datagrid('tooltip',['productid','listprice']); 指定列
*/
$.extend($.fn.datagrid.methods,{
	tooltip : function (jq, fields) {
        return jq.each(function () {
            var panel = $(this).datagrid('getPanel');
            if (fields && typeof fields == 'object' && fields.sort) {
                $.each(fields, function () {
                    var field = this;
                    bindEvent($('.datagrid-body td[field=' + field + '] .datagrid-cell', panel));
                });
            } else {
                bindEvent($(".datagrid-body .datagrid-cell", panel));
            }
        });
        function bindEvent(jqs) {
            jqs.mouseover(function () {
                var content = $(this).text();
                $(this).tooltip({
                    content : content,
                    trackMouse : true,
                    onHide : function () {
                        $(this).tooltip('destroy');
                    }
                }).tooltip('show');
            });
        }
    }
});
$.extend($.fn.datagrid.methods, {      
    /**
     * 开打提示功能    
     * @param {} jq    
     * @param {} params 提示消息框的样式    
     * @return {}    
     * onlyShowInterrupt	string	是否只有在文字被截断时才显示tip,默认值为false,即所有单元格都显示tip。
     * specialShowFields	Array	需要特殊定义显示的列,比如要求鼠标经过name列时提示standName列(可以是隐藏列)的内容,specialShowFields参数可以传入:[{field:'name',showField:'standName'}]。
     * position	string	tip的位置,可以为top,botom,right,left。
     * tipStyler	object	tip内容的样式,注意要符合jquery css函数的要求。
     * contentStyler	object	整个tip的样式,注意要符合jquery css函数的要求。
     * 例子: $('#dg').datagrid('doCellTip',   
         *     {   
    	 *        onlyShowInterrupt:false,   
    	 *         position:'bottom',   
    	 *         tipStyler:{'backgroundColor':'#fff000', borderColor:'#ff0000', maxWidth:'50px', boxShadow:'1px 1px 3px #292929'},   
    	 *         contentStyler:{backgroundColor:'#FFECE0', paddingLeft:'5px'}   
    	 *     });  
     */     
    doCellTip:function (jq, params) {      
        function showTip(showParams, td, e, dg) {      
            //无文本,不提示。      
            if ($(td).text() == "") return;      
               
            params = params || {};   
            var options = dg.data('datagrid');      
            showParams.content = '<div class="tipcontent">' + showParams.content + '</div>';      
            $(td).tooltip({      
                content:showParams.content,      
                trackMouse:true,      
                position:params.position || 'bottom',      
                onHide:function () {      
                    $(this).tooltip('destroy');      
                },      
                onShow:function () {      
                    var tip = $(this).tooltip('tip');      
                    if(showParams.tipStyler){      
                        tip.css(showParams.tipStyler);      
                    }else{
                    	//默认样式
                    	tip.css({'backgroundColor':'#fff2ea', borderColor:'#E7B895', maxWidth:'440px',boxShadow:'1px 1px 3px #292929'});
                    }      
                    if(showParams.contentStyler){      
                        tip.find('div.tipcontent').css(showParams.contentStyler);      
                    }else{
                    	//默认样式
                    	tip.find('div.tipcontent').css({backgroundColor:'#FFECE0', paddingLeft:'5px'});
                    }   
                }      
            }).tooltip('show');      
     
        };      
        return jq.each(function () {      
            var grid = $(this);      
            var options = $(this).data('datagrid');      
            if (!options.tooltip) {      
                var panel = grid.datagrid('getPanel').panel('panel');      
                panel.find('.datagrid-body').each(function () {      
                    var delegateEle = $(this).find('> div.datagrid-body-inner').length ? $(this).find('> div.datagrid-body-inner')[0] : this;      
                    $(delegateEle).undelegate('td', 'mouseover').undelegate('td', 'mouseout').undelegate('td', 'mousemove').delegate('td[field]', {      
                        'mouseover':function (e) {   
                            //if($(this).attr('field')===undefined) return;      
                            var that = this;   
                            var setField = null;   
                            if(params.specialShowFields && params.specialShowFields.sort){   
                                for(var i=0; i<params.specialShowFields.length; i++){   
                                    if(params.specialShowFields[i].field == $(this).attr('field')){   
                                        setField = params.specialShowFields[i];   
                                    }   
                                }   
                            }   
                            if(setField==null){   
                                options.factContent = $(this).find('>div').clone().css({'margin-left':'-5000px', 'width':'auto', 'display':'inline', 'position':'absolute'}).appendTo('body');      
                                var factContentWidth = options.factContent.width();      
                                params.content = $(this).text();      
                                if (params.onlyShowInterrupt) {      
                                    if (factContentWidth > $(this).width()) {      
                                        showTip(params, this, e, grid);      
                                    }      
                                } else {      
                                    showTip(params, this, e, grid);      
                                }    
                            }else{   
                                panel.find('.datagrid-body').each(function(){   
                                    var trs = $(this).find('tr[datagrid-row-index="' + $(that).parent().attr('datagrid-row-index') + '"]');   
                                    trs.each(function(){   
                                        var td = $(this).find('> td[field="' + setField.showField + '"]');   
                                        if(td.length){   
                                            params.content = td.text();   
                                        }   
                                    });   
                                });   
                                showTip(params, this, e, grid);   
                            }   
                        },      
                        'mouseout':function (e) {      
                            if (options.factContent) {      
                                options.factContent.remove();      
                                options.factContent = null;      
                            }      
                        }      
                    });      
                });      
            }      
        });      
    },      
    /**
     * 关闭消息提示功能    
     * @param {} jq    
     * @return {}    
     */     
    cancelCellTip:function (jq) {      
        return jq.each(function () {      
            var data = $(this).data('datagrid');      
            if (data.factContent) {      
                data.factContent.remove();      
                data.factContent = null;      
            }      
            var panel = $(this).datagrid('getPanel').panel('panel');      
            panel.find('.datagrid-body').undelegate('td', 'mouseover').undelegate('td', 'mouseout').undelegate('td', 'mousemove')      
        });      
    }      
});
$.extend($.fn.form.methods, {
	getData: function(form) {
		var data = {};
		form.find('input').each(function() {
			this.name && (data[this.name] = this.value);
		});
		return data;
	},
	setReadOnly: function(form, isReadOnly) {
		var fieldBtn = form.find('button.fieldBtn'),
		aBtns = form.find('.textbox a'),
		inputs = form.find('input[readonly!=true],textarea');
		if (isReadOnly) {
			fieldBtn.attr('disabled', 'disabled').addClass('l-btn-disabled');
			inputs.attr('readonly', 'readonly').parent('.textbox').addClass('textbox-readonly');
			aBtns.addClass('textbox-icon-disabled');
		} else {
			fieldBtn.removeAttr('disabled').removeClass('l-btn-disabled');
			inputs.removeAttr('readonly').parent('.textbox').removeClass('textbox-readonly');
			aBtns.removeClass('textbox-icon-disabled');
		}
	}
});




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值