解析jquery easyui tree异步加载子节点问题

发布时间 - 2026-01-11 00:03:51    点击率:

easyui中的树可以从标记中建立,也可以通过指定一个URL属性读取数据建立。如果想建立一棵异步树,需要为每个节点指定一个id属性值,这样在加载数据时会自动向后台传递id参数。

<ul id="tt"></ul>

编写前台代码:

$('#tt').tree({
  url:'/demo2/node/getNodes'  // The url will be mapped to NodeController class and getNodes method
});

为测试用,建立一个节点的数据模型:

@Table(name="nodes")
public class Node extends ActiveRecordBase{
  @Id public Integer id;
  @Column public Integer parentId;
  @Column public String name;
 
  public boolean hasChildren() throws Exception{
    long count = count(Node.class, "parentId=?", new Object[]{id});
    return count > 0;
  }
}

编写后台的控制器代码:

public class NodeController extends ApplicationController{
  /**
   * get nodes, if the 'id' parameter equals 0 then load the first level nodes,
   * otherwise load the children nodes
   * @param id the parent node id value
   * @return the tree required node json format
   * @throws Exception
   */
  public View getNodes(int id) throws Exception{
    List<Node> nodes = null;
 
    if (id == 0){  // return the first level nodes
      nodes = Node.findAll(Node.class, "parentId=0 or parentId is null", null);
    } else {  // return the children nodes
      nodes = Node.findAll(Node.class, "parentId=?", new Object[]{id});
    }
 
    List<Map<String,Object>> items = new ArrayList<Map<String,Object>>();
    for(Node node: nodes){
      Map<String,Object> item = new HashMap<String,Object>();
      item.put("id", node.id);
      item.put("text", node.name);
 
      // the node has children, 
      // set the state to 'closed' so the node can asynchronous load children nodes 
      if (node.hasChildren()){
        item.put("state", "closed");
      }
      items.add(item);
    }
 
    return new JsonView(items);
  }
}

官网例子地址:http://www.jeasyui.com/tutorial/tree/tree2.php

demo下载:easyui-tree2_jb51.rar 

重要的事情说三遍!!!

$('#tt').tree({
  method:"POST",
  url:'/demo2/node/getNodes'  // The url will be mapped to NodeController class and getNodes method
});

method一定要用POST,GET的话要在URL后面用一个变量来做时间戳处理。

method一定要用POST,GET的话要在URL后面用一个变量来做时间戳处理。

method一定要用POST,GET的话要在URL后面用一个变量来做时间戳处理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# easyui  # tree  # 异步加载  # 异步  # jquery  # 异步树  # EASYUI TREEGRID异步加载数据实现方法  # jquery easyui中treegrid用法的简单实例  # JQuery Easyui Tree的oncheck事件实现代码  # 使用jQuery+EasyUI实现CheckBoxTree的级联选中特效  # 浅谈EasyUI中Treegrid节点的删除  # EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例  # 浅析jQuery EasyUI中的tree使用指南  # Easyui Treegrid改变默认图标的方法  # EasyUi combotree 实现动态加载树节点  # 采用easyui tree编写简单角色权限代码的方法  # 要在  # 要用  # 来做  # 可以通过  # 建立一个  # 一棵  # 官网  # 大家多多  # 三遍  # 加载  # Integer  # nodes  # parentId  # Column  # Id  # Node  # public  # ActiveRecordBase  # extends  # count 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 佛山网站制作系统,佛山企业变更地址网上办理步骤?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  如何快速生成ASP一键建站模板并优化安全性?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel怎么在Controller之外的地方验证数据  Laravel观察者模式如何使用_Laravel Model Observer配置  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  iOS正则表达式验证手机号、邮箱、身份证号等  Python正则表达式进阶教程_复杂匹配与分组替换解析  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在Tomcat中配置并部署网站项目?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  手机软键盘弹出时影响布局的解决方法  HTML 中如何正确使用模板变量为元素的 name 属性赋值  利用JavaScript实现拖拽改变元素大小  如何快速配置高效服务器建站软件?  Linux网络带宽限制_tc配置实践解析【教程】  Laravel怎么使用Intervention Image库处理图片上传和缩放  Python面向对象测试方法_mock解析【教程】  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Internet Explorer官网直接进入 IE浏览器在线体验版网址  零服务器AI建站解决方案:快速部署与云端平台低成本实践  详解jQuery中基本的动画方法  如何用PHP工具快速搭建高效网站?  Android okhttputils现在进度显示实例代码  如何用好域名打造高点击率的自主建站?  奇安信“盘古石”团队突破 iOS 26.1 提权  简单实现Android验证码  如何用wdcp快速搭建高效网站?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  PHP 500报错的快速解决方法  Android GridView 滑动条设置一直显示状态(推荐)  Laravel如何实现用户注册和登录?(Auth脚手架指南)  LinuxShell函数封装方法_脚本复用设计思路【教程】  香港服务器选型指南:免备案配置与高效建站方案解析  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  javascript如何操作浏览器历史记录_怎样实现无刷新导航  详解jQuery停止动画——stop()方法的使用  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何快速搭建高效WAP手机网站吸引移动用户?  MySQL查询结果复制到新表的方法(更新、插入)  Python文件操作最佳实践_稳定性说明【指导】  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  微信小程序 五星评分(包括半颗星评分)实例代码  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤