easyui tree异步加载子节点全选问题

love603221878 2015-01-19 02:03:54
使用easyui tree 节点有checkbox,初始只加载parent_id=0的节点,当点击展开按钮才向服务器发送请求加载该节点的子节点,
这样就导致我勾选某个节点时他的子节点没有被加载且没被选中,展开该节点又会出现 加载子节点,由于子节点为被选中,导致原本被选中的父节点变为未选中。
比如我勾选

展开这个节点时就会出现


请问如何解决,现在暂时的方法是在oncheck时间里增加展开操作,但这样很不人性化
...全文
255 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2015-01-19
  • 打赏
  • 举报
回复
将父节点状态传到后台,返回时候子节点状态与父节点状态相同即可
afhlm 2015-01-19
  • 打赏
  • 举报
回复
你可以通过勾选的父节点值传到数据库中去递归找到子节点.
love603221878 2015-01-19
  • 打赏
  • 举报
回复

$j("#rolemenu_treeview_id").tree({
		
			panlHeight : 'auto',
			checkbox : true,
			url : "${webpath}/role_getrolemenu.do?role_id=${RoleData.id}",
			
			onLoadSuccess : function(node){

					var children = $j(this).tree('getChildren',node.target);
					//console.info(children);
					for (var i=0; i<children.length; i++) {
						$j(this).tree('expand',children[i].target);
						//if(node.checked==true){
							$j(this).tree('check',children[i].target);
						//}
					}
					
			},
			onCheck : function(node, checked) {

				$j(this).tree('expand',node.target);

				var nodeids = '';
				var nodelist = $j("#rolemenu_treeview_id").tree('getChecked');
				
				for (var i=0; i<nodelist.length; i++) {
				
					nodeids += nodelist[i].id + ',';
					
				}
				
				//alert(nodeids);
				$j("#menuids").val(nodeids);
	
			},
			
			lines : true			
		
		});		
love603221878 2015-01-19
  • 打赏
  • 举报
回复
我想让这个tree在勾选节点时,该节点不展开而且能加载子节点并被全选,怎么才能做到?

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧