原创

JEECG 树列表操作总刷新列表,需要重新展开问题 【官方补丁,适用所有版本】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://jeecg.blog.csdn.net/article/details/81670297

痛苦 - JEECG 树列表操作后,总是刷新整个列表,需要重新展开,这样操作太繁琐。

针对此问题,我们出了此升级方案(适用所有版本)

 JEECG 3.7.8之前版本,系统管理中的菜单管理、组织结构管理等增删改操作,操作提交会刷新整个列表,再操作时还需一级一级重新点开,很麻烦。该补丁解决了该问题,实现针对操作节点的局部刷新,在操作完后可快速定位展示操作后的节点。

 1、修改后的操作效果演示

 

2、升级补丁下载

          菜单管理、部门管理升级补丁下载地址:

          链接: https://pan.baidu.com/s/1FYv0sfDxd1cyWGJJ39Q-lg 密码: f687

 

3、升级代码细节讲解(此步可略过)

以菜单管理为例,实现功能的改造

(1)菜单管理列表页面(/src/main/webapp/webpage/system/function/functionList.jsp)

 添加列表刷新方法:

function reloadTreeNode(){
	var node = $('#functionList').treegrid('getSelected');
    if (node) {
	   	 var pnode = $('#functionList').treegrid('getParent',node.id);
	   	 if(pnode){
	   		if(node.parentId==""){
	   			$('#functionList').treegrid('reload');
	   		 }else{
	   	 		$('#functionList').treegrid('reload',pnode.id);
	   		 }
	   	 
	   	 }else{
	   		if(node.parentId==""){
	   			$('#functionList').treegrid('reload');
	   		 }else{
	   	 		$('#functionList').treegrid('reload',pnode.id);
	   		 }
	   	 }
    }else{
    	 $('#functionList').treegrid('reload');
    }
}

(2)添加、编辑页面改造(/src/main/webapp/webpage/system/function/function.jsp)

 添加编辑页面,数据提交之后调用列表页面

需要重写表单提交后的回调方法

标签增加callback属性:callback="@Override callbackTreeLoad"  并设置 dialog="true",@Override callbackTreeLoad表示调用当前页面方法callbackTreeLoad。

<t:formvalid formid="formobj" layout="div" dialog="true" callback="@Override callbackTreeLoad" ……

重写callback方法:最后调用父页面(即列表页面)刷新树形列表treegrid的方法win.reloadTreeNode();

function callbackTreeLoad(data){
		var win = frameElement.api.opener;
		if (data.success == true) {
			frameElement.api.close();
			win.tip(data.msg);
		} else {
			if (data.responseText == ''
					|| data.responseText == undefined) {
				$.messager.alert('错误', data.msg);
				$.Hidemsg();
			} else {
				try {
					var emsg = data.responseText
							.substring(
									data.responseText
											.indexOf('错误描述'),
									data.responseText
											.indexOf('错误信息'));
					$.messager.alert('错误', emsg);
					$.Hidemsg();
				} catch (ex) {
					$.messager.alert('错误',
							data.responseText + "");
					$.Hidemsg();
				}
			}
			return false;
		}
		win.reloadTreeNode();
}

(3)改造删除方法:

删除按钮自定义:funname指定重构的方法

<t:dgFunOpt funname="delMenu(id)" title="common.delete" urlclass="ace_button" urlStyle="background-color:#ec4758;" urlfont="fa-trash-o"></t:dgFunOpt>

重构删除方法:删除成功后调用刷新树形列表treegrid的方法reloadTreeNode();

//删除菜单
function delMenu(id,name) {
	var url = "functionController.do?del&id="+id
	var content = $.i18n.prop('del.this.confirm.msg');
	var title = $.i18n.prop('del.confirm.title');
	$.dialog.setting.zIndex = getzIndex(true);
	var navigatorName = "Microsoft Internet Explorer"; 
	if( navigator.appName == navigatorName ||"default,shortcut".indexOf(getCookie("JEECGINDEXSTYLE"))>=0){ 
		$.dialog.confirm(content, function(){
			doDelSubmit(url);
			rowid = '';
		}, function(){
		});
	}else{
		layer.open({
			title:title,
			content:content,
			icon:7,
			shade: 0.3,
			yes:function(index){
				doDelSubmit(url);
				rowid = '';
			},
			btn:[$.i18n.prop('common.ok'),$.i18n.prop('common.cancel')],
			btn2:function(index){
				layer.close(index);
			}
		});
	}
}

/**
 * 执行操作
 * 
 * @param url
 * @param index
 */
function doDelSubmit(url) {
	$.ajax({
		async : false,
		cache : false,
		type : 'POST',
		url : url,// 请求的action路径
		error : function() {// 请求失败处理函数
		},
		success : function(data) {
			var d = $.parseJSON(data);
			if (d.success) {
				var msg = d.msg;
				tip(msg);
				reloadTreeNode();
			} else {
				tip(d.msg);
			}
		}
	});
}

以上改造完成!!!

 

 

 

 

 

 

文章最后发布于: 2018-08-15 16:36:45
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览