欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-13 08:26:46
easyui中的树可以从标记中建立,也可以通过指定一个url属性读取数据建立。如果想建立一棵异步树,需要为每个节点指定一个id属性值,这样在加载数据时会自动向后台传递id参...

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);
  }
}

官网例子地址:

demo下载: 

重要的事情说三遍!!!

$('#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后面用一个变量来做时间戳处理。

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

上一篇:

下一篇: