Ext 中導航樹的創建有兩種方式:1、首先將所有的數據讀出來,然后綁定到前台頁面。2、每點擊一個節點展開后加載子節點。在數據量比較小的時候使用第一種方式加載的會快一些,然而當數據量比較大的時候,我還是建議使用第二種方式的。這里我就來介紹一下第二種樹的展示方式。
源碼奉上:
1 //創建model 2 Ext.define("treeModel",{ 3 extend:"Ext.data.Model", 4 fields:["OUID","OUName"] 5 }) 6 //創建Store 7 var treeStore=Ext.create("Ext.data.TreeStore",{ 8 model:"treeModel", 9 proxy:{ 10 type:"ajax", 11 url:"treeHandler.ashx", 12 extraParams:{pid:0} 13 }, 14 listeners:{ 15 beforeexpand:function(node) 16 { 17 this.proxy.extraParams.pid=node.raw.OUID; 18 } 19 }, 20 autoLoad:true 21 }); 22 //創建樹 23 var tree=Ext.create("Ext.tree.Panel",{ 24 store:treeStore, 25 userArrows:true, 26 rootVisible:false, 27 name:"OUID", 28 displayField:"OUName", 29 valueField:"OUID", 30 listeners:{ 31 itemclick:function(view,rec) 32 { 33 34 } 35 } 36 })
至此我們的一個動態樹的前台頁面就創建好了。
接下來我們需要做的就是在后台進行數據的處理,然后以json的格式發送給前台。
1 public string GetTree(int pid) 2 { 3 string json =string.Empty; 4 DataTable dt=tree; 5 json=JsonConvert.SerializeObject(dt); 6 return json; 7 }
注:參數 pid 是每次點擊樹的節點展開之后,向后台傳遞的當前節點的ID,這里作為子節點的父節點使用。
在將數據轉換為json格式的時候我這里采用了Newtonsoft 中的序列化函數,它可以講List,IList,DataTable 直接轉換為json的格式。