问题:做项目的时候遇到代码生成的页面,只默认展开了一级节点,每次操作之后刷新还要手动一级一级展开,太麻烦了

官方API:http://www.jeasyui.net/plugins/186.html

我的html代码:

<div class="easyui-layout" fit="true">
<div region="center" style="padding:0px;border:0px">
<t:datagrid name="jccmAreaManagerList" checkbox="false" pagination="true" treegrid="true" treeField="areaName" fitColumns="true" title="区域管理" sortName="createDate" actionUrl="jccmAreaManagerController.do?datagrid" idField="id" fit="true" queryMode="group">
<t:dgCol title="主键" field="id" hidden="true" queryMode="single" width="120"></t:dgCol>
</t:datagrid>
</div>
</div>

原本的页面加载完成后的处理代码:

 $(document).ready(function(){
$("#jccmAreaManagerList").treegrid({
onExpand : function(row){
var children = $("#jccmAreaManagerList").treegrid('getChildren',row.id);
//console.log(children);
if(children.length<=0){
row.leaf=true;
$("#jccmAreaManagerList").treegrid('refresh', row.id);
}
}
});

设置treegrid展开与折叠,根据官方文档里的介绍

修改之后的代码:

 $(document).ready(function(){
$("#jccmAreaManagerList").treegrid({
onExpand : function(row){
var children = $("#jccmAreaManagerList").treegrid('getChildren',row.id);
if(children.length<=0){
row.leaf=true;
$("#jccmAreaManagerList").treegrid('refresh', row.id);
}
},
onLoadSuccess: function (row, data){
var nodes = $('#jccmAreaManagerList').treegrid('getRoots');
if (nodes.length>0) {
for(var i=0;i<nodes.length;i++){
$('#jccmAreaManagerList').treegrid('expand', nodes[i].id)
}
}
//$.each(data, function (i, val) { $('#jccmAreaManagerList').treegrid('expandAll', data[i].id)})//展开所有节点
//$.each(data, function (i, val) { $('#jccmAreaManagerList').treegrid('collapseAll', data[i].id)})//折叠所有节点
}
});

此处解决了我想要的展开到第二级的功能,但是出现了一个新的问题,就是数据加载了两次

1、在网上看到好多说是html代码中利用class声明了datagrid,导致easyUI解析class代码的时候先解析class声明中的datagrid,这样组件就请求了一次url;然后又调用js初始化代码请求一次url。这样导致了重复加载,解决的方法就是只用一种初始化方法来声明easyUI组件以避免重复的提交请求,即删除html中的class声明(class="easyui-datagrid"),然而我的HTML代码中并没有这些东西

2、再者就是说吧url不要放到HTML中,而是直接放到JS中,但是我这样操作,直接导致页面打不开,暂时没有去找是为何

3、最后解决办法很神奇,加了延时处理初始化就好了,个中缘由着实不知为何呢,希望有大神解答。

参考:https://blog.csdn.net/mmake1994/article/details/84203512

https://bbs.csdn.net/topics/390953438

 

最终的JS代码:

$(document).ready(function(){
setTimeout(init, 1);
});
function init(){
$("#jccmAreaManagerList").treegrid({
onExpand : function(row){
var children = $("#jccmAreaManagerList").treegrid('getChildren',row.id);
//console.log(children);
if(children.length<=0){
row.leaf=true;
$("#jccmAreaManagerList").treegrid('refresh', row.id);
}
},
onLoadSuccess: function (row, data){
var nodes = $('#jccmAreaManagerList').treegrid('getRoots');
//console.log(nodes);
if (nodes.length>0) {
for(var i=0;i<nodes.length;i++){
$('#jccmAreaManagerList').treegrid('expand', nodes[i].id)
}
}
//$.each(data, function (i, val) { $('#jccmAreaManagerList').treegrid('expandAll', data[i].id)})//展开所有节点
}
});
}

JQuery EasyUI treegrid展开与折叠,以及数据加载两次的问题的更多相关文章

  1. jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

    博客分类: jquery-easyui jQueryAjax框架HTML  现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...

  2. EasyUI使用tree方法生成树形结构加载两次的问题

    html代码中利用class声明了easyui-tree,导致easyUI解析class代码的时候先解析class声明中的easyui-tree这样组件就请求了一次url:然后又调用js初始化代码请求 ...

  3. Jquery easyui treegrid实现树形表格的行拖拽

    前几天修改了系统的一个功能——实现树形列列表的行拖拽,以达到排序的目的.现在基本上功能实现,现做一个简单的总结. 1.拿到这个直接网上搜,有好多,但是看了后都觉得不是太复杂就是些不是特别想看的例子,自 ...

  4. jQuery文本段落展开和折叠效果

    <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/h ...

  5. 雷林鹏分享:jQuery EasyUI 表单 - 过滤下拉数据网格

    jQuery EasyUI 表单 - 过滤下拉数据网格 下拉数据网格(Combogrid)组件和下拉框(Combobox)组件的共同点是,除了都具有下拉面板以外,它们都是基于数据网格(Datagrid ...

  6. jQuery easyui datagrid 的数据加载

        其实easyuidatagrid加载数据只有两种方式:一种是ajax加载目标url返回的json数据:另一种是加载js对象,也就是使用loadDate方法,这种方法用于加载本地js数据(非ur ...

  7. jQuery 文本段落展开和折叠效果

    jQuery 文本段落展开和折叠效果 <!DOCTYPE html> <head> <meta http-equiv="Content-Type" c ...

  8. [转载]再次谈谈easyui datagrid 的数据加载

    这篇文章只谈jQuery easyui datagrid 的数据加载,因为这也是大家谈论最多的内容.其实easyui datagrid加载数据只有两种方式:一种是ajax加载目标url返回的json数 ...

  9. 谈谈easyui datagrid 的数据加载(转)

    这篇文章只谈jQuery easyui datagrid 的数据加载,因为这也是大家谈论最多的内容.其实easyui datagrid加载数据只有两种方式:一种是ajax加载目标url返回的json数 ...

随机推荐

  1. Spring中的@ImportResource

    简介 这个注解很简单,就是导入spring的xml配置文件 直接来看spring官方文档: In applications where @Configuration classes are the p ...

  2. 【剑指offer】面试题 22. 链表中倒数第 K 个节点

    面试题 22. 链表中倒数第 K 个节点

  3. SpringAOP异常:org.springframework.aop.aspectj.AspectJExpressionPointcut cannot be cast to com.....

    Exception in thread "main" java.lang.ClassCastException: org.springframework.aop.aspectj.A ...

  4. 在window10安装Mysql

    一:下载 1.1下载地址:https://dev.mysql.com/downloads/mysql/ 1.2解压 D:\InstallSoftWare\MYSQL 2环境变量配置    path里添 ...

  5. Pandas的基础操作(一)——矩阵表的创建及其属性

    Pandas的基础操作(一)——矩阵表的创建及其属性 (注:记得在文件开头导入import numpy as np以及import pandas as pd) import pandas as pd ...

  6. 20 IO流(十七)——Commons工具包,FileUtils(二)——copy方法

    copy方法 package com.sxt.copy; import java.io.File; import java.io.IOException; import java.net.URL; i ...

  7. 基于全志a33-vstar开发板的ap6210WiFi模块移植

    可以去链接看更详细的,第一次用博客,这个编辑方式太不友好了. 文档:全志a33--系统移植--ap6210WiFi模块移?..链接:http://note.youdao.com/noteshare?i ...

  8. PHP生成随机单词

    class GenRandWords { private static $_alphas = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', ' ...

  9. kubernetes 实践三:使用kubeadm安装k8s1.16.0

    环境版本说明: 三台vmware虚拟机,系统版本CentOS7.6. Kubernetes 1.16.0,当前最新版. flannel v0.11 docker 18.09 使用kubeadm可以简单 ...

  10. TiDB基本架构简单总结

    TiDB特点 高可用 水平拓展 事务 SQL支持 TiDB架构 ​ 和MySql不同,TiDB是一个分布式的数据库而不是单个进程,所以整个TiDB是由以下角色组成: TiKV, PD, TiDB, T ...