关于Easyui中tree 的那点破事

时间:2022-07-02 12:42:00
先看官网的提供的说明:
  • id: 节点的ID
  • text: 节点显示的文字
  • state: 节点状态,有两个值  'open' or 'closed', 默认为'open'. 当为‘closed’时说明此节点下有子节点否则此节点为叶子节点
  • checked: Indicate whether the node is checked selected.
  • attributes: 节点中其他属性的集合
  • children: 子节点集合
接收的JSON格式如下:
[{
    "id":1,
    "text":"Folder1",
    "iconCls":"icon-save",
    "children":[{
        "text":"File1",
        "checked":true
    },{
        "text":"Books",
        "state":"open",
        "attributes":{
            "url":"/demo/book/abc",
            "price":100
        },
        "children":[{
            "text":"PhotoShop",
            "checked":true
        },{
            "id": 8,
            "text":"Sub Bookds",
            "state":"closed"
        }]
    }]
},{
    "text":"Languages",
    "state":"closed",
    "children":[{
        "text":"Java"
    },{
        "text":"C#"
    }]
}]
 
 我们在应用时,程序只要返这样的格式给tree 就可以了
如果tree 节点不多,建议一次取出所有数据。如果想异步加载数据。可以使用如下代码:
html:
 
<ul id="tree"></ul>
 
JS:
$(function(){
     $('#tree').tree({
          url:'treedata.ashx',
          onClick:function(node){
                alert(node.text);
          }
     })
})

代码很简单吧,其实复杂的都在处理JSON数据中,后端要生tree指定格式的字符串,这棵树才会正常运转.

大多数据在设计的时候不会专门为此树设计相应的字段。 比如:text 在我们的数据库中可能是title 那我们就需要在生成字符串后替换下,将title 替换为 text 。 很多同学认为在点击节点时需要把此节点的ID传给后端程序,这一点很多同学在初次接触时会有误解,在点击节点时会自动检查是否有子节点,如有会自动调用url并将父ID传过去地。