在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');
}
}
});