请问一下jquery easyui treegrid如何异步加载子节点

呵呵我来啦 2013-01-14 02:23:41
rt:点击自己点实现一层层加载,网上说只需要指定一个url,我使用的ajax 来做的,出发事件是onBeforeExpand,加载完子节点后,用的append方法,但是不对,没有形成一层一层的树形结构,而且再次伸缩展开会造成重复加载数据,太麻烦了,麻烦给点思路或者例子,感激不尽了~~
本人用的是asp.net mvc 有这样的例子就更好了,没有也没关系!网上查了很多还是没有明白。
...全文
11273 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_zhifu 2015-01-12
  • 打赏
  • 举报
回复
引用 21 楼 ygfmis 的回复:
treegrid异步加载后发现 getslections 不能获取到选中的子节点行 有人遇到过么?
treegrid方法中的idField必须指定,且必须是唯一的
Jwenzeng 2014-11-06
  • 打赏
  • 举报
回复
引用 21 楼 ygfmis 的回复:
treegrid异步加载后发现 getslections 不能获取到选中的子节点行 有人遇到过么?
我还卡着,请问你解决了吗,能分享下方法吗
ygfmis 2014-10-10
  • 打赏
  • 举报
回复
treegrid异步加载后发现 getslections 不能获取到选中的子节点行 有人遇到过么?
kk618172 2013-12-27
  • 打赏
  • 举报
回复
妹的,一个账号居然只允许连续回复3次,换个账号来: 实体类代码,get set方法就不贴了:

public class DictTreeGrid {
	private String id;
	private String dictCode;
	private String dictName;
	private String dictype;
	private String isUsed;
	private String state = "open";// open,closed
	private Object attributes;
	private List<DictTreeGrid> children;
	private String iconCls;
}
manager类里的getTreeGrid方法: #说明:URL 请求里没有传ID,是easyUI自动post过来的,第一次加载的时候,没有id传过来,就直接getRoot,就是获取一级目录,后面在点开某个节点的时候,easyUI又会自动的post数据,这个时候就会把当前行的id传过来

public List<DictTreeGrid> getTreeGrid(String id) {
		List<DictTreeGrid> treeList = new ArrayList<DictTreeGrid>();
		List<Dictionary> treeData = new ArrayList<Dictionary>();
		if (id == null) {
			treeData = baseDAO.getRoot();
		} else {
			treeData = baseDAO.findBy("dictype", id);
		}

		if (treeData != null && treeData.size() > 0) {
			for (Dictionary dict : treeData) {
				DictTreeGrid treeGrid = new DictTreeGrid();
				treeGrid.setId(dict.getId().toString());
				treeGrid.setDictCode(dict.getDictCode());
				treeGrid.setDictName(dict.getDictName());
				if (dict.getDictype() != null) {
					treeGrid.setDictype(dict.getDictype().toString());
				}
				if (dict.getIsUsed() != null) {
					treeGrid.setIsUsed(dict.getIsUsed().toString());
				}
                                //判断当前行还有子项没,有的话,就把state设置为closed
				if (hasChildren(dict.getId())) {
					treeGrid.setState("closed");
				}
				treeList.add(treeGrid);
			}
		}
		return treeList;
	}
Rlay_2 2013-12-27
  • 打赏
  • 举报
回复
url : path + '/dictionaryController/asyncTreeGrid.do' Controller层代码

@RequestMapping("/asyncTreeGrid")
	@ResponseBody
	public List<DictTreeGrid> asyncTreeGrid(HttpServletRequest request, HttpServletResponse response) {
		List<DictTreeGrid> treeList = new ArrayList<DictTreeGrid>();
		try {
			String id = request.getParameter("id");
			treeList = this.dictionartManager.getTreeGrid(id);
		} catch (Exception e) {
			logger.error("", e);
		}
		return treeList;
	}
Rlay_2 2013-12-27
  • 打赏
  • 举报
回复
数据库:
dictype关联id,呈现父子关系
Rlay_2 2013-12-27
  • 打赏
  • 举报
回复
我正好也遇到了,我做出来了,很简单的,贴代码,为过来人某点福利吧
夜猫人 2013-12-23
  • 打赏
  • 举报
回复
遇到相同蛋疼的问题
Mike_90 2013-08-20
  • 打赏
  • 举报
回复
我也遇到这个问题了,蛋疼啊,不知道怎么解决
yuhongpingimu 2013-04-20
  • 打赏
  • 举报
回复
hi,这个问题是怎么解决的呢? 我现在是只加载了第一级节点。 点开文件夹后面的都不显示。 但是数据已经回来了。
呵呵我来啦 2013-04-09
  • 打赏
  • 举报
回复
JavaScript code?1234onBeforeLoad:function(row,param){if(row)$(this).treegrid({ url:'/home/getData' //这里不需要自己指定id }); 就ok了
liaowanyong 2013-03-30
  • 打赏
  • 举报
回复
如楼主所说,treegrid加载时会自动在onBeforeExpand的时候回传ROW.ID值给URL, 就是说展开子节点时treegrid会在原URL加上?ID=X作为子节点的数据URL(如'../****?id=1'), 所以在treegrid的URL中就可直接实现异步,无需任何其它代码。
ji1517173346 2013-03-20
  • 打赏
  • 举报
回复
我也遇到了这个问题,请楼主把解决方案贴出来分享一下
javalhl 2013-03-06
  • 打赏
  • 举报
回复
楼主说解决了,可否把代码贴出来看下。。。
javalhl 2013-03-06
  • 打赏
  • 举报
回复
引用 2 楼 wangle1189 的回复:
JavaScript code?1234onBeforeLoad:function(row,param){if(row)$(this).treegrid('options').url='....../?parentId=row.id';}
加了这一段代码,可treegrid根本没有去请求这个url,后台都没有输出。唉,神奇了。
javalhl 2013-03-06
  • 打赏
  • 举报
回复
onBeforeLoad:function(row,param){if(row)$(this).treegrid('options').url='....../?parentId=row.id';}
zgh_mnb 2013-01-23
  • 打赏
  • 举报
回复
引用 2 楼 wangle1189 的回复:
JavaScript code ? 12345 onBeforeLoad:function(row,param){ if(row) $(this).treegrid('options').url='....../?parentId=row.id'; }
呵呵我来啦 2013-01-23
  • 打赏
  • 举报
回复
onBeforeExpand 自己就会post数据可以抓包看看 而且post就是row.id
呵呵我来啦 2013-01-23
  • 打赏
  • 举报
回复
呵呵,这个问题我研究解决了 不需要使用 append方法,还是指定url,而且不需要使用自己的ajax,它自己本身就会post数据 jquery easyui treegrid 我写了两个 action ,在onBeforeExpand里面触发一个getChild 开始加载的时候是一个getRoot url可以在data-options里写,也可以在后面的 $(function(){ $.("#tg").treegrid({ url:"/../getRoot }); 这样就行了 不过我遇到一个问题发现第一个父节点点击子节点它的缩进有问题 竟然和父节点左边的缩进一样后面的父节点就没问题呢 父节点就是根节点 第一次查询出来的不是一个…… 不过差不多弄出来了把 })
解析 2013-01-22
  • 打赏
  • 举报
回复
初次加载的时候 url:'..../?parentId=0' 这样就能实现分次装载了
加载更多回复(2)
最新版本的jQuery EasyUI 1.3.6版全中文API汉化文档火热出炉,由于很多人和我要chm格式的,所以本次API我提供了2种版本的API,一个还是以前的EXE格式,另外一个就是人气颇高的chm格式。本次还将EasyUI 1.3.6版直接提供到API包里面,方便没有去官网下载的人直接使用。请大家持续关注我发布的资源,不出意外,我是会一直持续更新本API文档的。本次更新内容大约有30个,Bug修复的只有2个,剩下的全是新增内容,EasyUI的控件已经越来越好用了,顶一个。但是希望能把性能也提升提升,总是感觉在某些情况下EasyUI的性能不是太好。具体更新内容请看下面的说明: jQuery EasyUI 1.3.6版本更新内容: Bug(修复) treegrid:修复“getChecked”方法不能正确的返回被选择的行的问题; tree:修复在“onlyLeafCheck”属性为true时,复选框无法在异步树种正确显示的问题。 Improvement(改进) treegrid:所有的选择和选中的方法都扩展自datagrid组件; linkbutton:添加图标对齐功能的完整支持,可用值有:“top”、“bottom”、“left”、“right”; linkbutton:添加“size”属性,可用值有:“small”、“large”; linkbutton:添加“onClick”事件; menubutton:添加“menuAlign”属性,该属性允许用户设置顶级菜单对齐; combo:添加“panelAlign”属性,可用值有:“left”、“right”; calendar:添加“formatter”、“styler”和“validator”属性,这些属性允许用于自定义日历日期; calendar:添加“onChange”事件; panel:添加“method”、“queryParams”和“loader”选项; panel:添加“onLoadError”事件; datagrid:添加“onBeginEdit”事件,该事件在一个行进入编辑模式时触发; datagrid:添加“onEndEdit”事件,该事件在完成编辑但是编辑器尚未销毁之前触发; datagrid:添加“sort”方法和“onBeforeSortColumn”事件; datagrid:将“combogrid”编辑器集成到datagrid中; datagrid:添加“ctrlSelect”属性,在启用多行选择的时候允许使用Ctrl键+鼠标点击的方式进行多选操作; slider:添加“converter”属性,该属性允许用户决定如何将一个值转换为进度条位置或进度条位置值; searchbox:添加“disabled”属性; searchbox:添加“disable”、“enable”、“clear”、“reset”方法; spinner:添加“readonly”属性、“readonly”方法和“onChange”事件。
基于EasyUI 官方的帮助。 Application 使用easyUI创建一个CRUD的应用 使用easyUI创建一个CRUD DataGrid 使用easyUI展开行详细编辑form创建CRUD应用 使用jQuery easyUI 创建一个 RSS Feed阅读器 Drag and Drop easyUI 基础的拖动和放置 使用easyUI创建一个拖放的购物车 使用easyUI创建一个课程表 Menu and Button 使用easyUI创建简单的菜单 使用easyUI创建Link Button 使用easyUI创建Menu Button 使用easyUI创建Split Button Layout 使用easyUI创建一个border layout在你的web页面 使用easyUI在panel中创建复杂布局 使用easyUI创建折叠面板 使用easyUI创建Tabs标签 使用easyui创建tabs组件和动态添加 使用easyUI创建一个自动播放的tabs 使用easyUI创建XP风格左侧面板 DataGrid 使用easyUI转换HTML table到datagrid 使用easyUI给datagrid添加pagination 使用easyUI添加查询功能在datagrid 使用easyUI 添加toolbar到datagrid 使用easyUI 创建复杂的toolbar到datagrid 使用easyUI 为datagrid冻结列 使用easyUI 动态改变datagrid的columns 使用easyUI 格式化datagrideasyUI 添加排序到datagrid easyUI 自定义排序datagrid easyUI 添加CheckBox选择到DataGrid easyUI自定义DataGrid分页栏 启用DataGrid行内编辑器 继承扩展DataGrid的editors easyUI在可编辑的datagrid中计算两列的值 easyUI合并DataGrid单元格 easyUI为datagrid创建自定义视图 easyUI datagrid显示摘要信息在页脚 easyUI 根据一些条件改变DataGrid 行背景颜色 easyUI 创建一个 Property Grid easyUI 展开DataGrid里面的行显示详细信息 easyUI 在主datagrid上创建子datagrid Window easyUI 我的第一个window easyUI 自定义window工具 easyUI window和布局 easyUI 创建Dialog对话框 easyUI Dialog自定义Toolbar和button Tree easyUI 从标记创建Tree easyUI 创建异步Tree easyUI 附加tree节点到tree easyUI 创建Tree和复选框Tree Node easyUI 拖动(Drag)和放置(Drop)Tree easyUI 加载parent/child节点到tree 转换tree标准格式数据 easyUI 创建一个基础的TreeGrid easyUI 创建复杂TreeGrid Form easyUI 通过ajax的方式提交Form easyUI 添加ComboTree 字段到一个 form easyui Form验证 easyUI 格式化ComboBox easyui 过滤ComboGrid 扩展 easyui DWR加载 easyUI 主题

87,901

社区成员

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

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