JavaScript的ExtJS框架中數(shù)面板TreePanel的使用實例解析
來源:易賢網(wǎng) 閱讀:914 次 日期:2016-06-25 14:02:16
溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript的ExtJS框架中數(shù)面板TreePanel的使用實例解析”,方便廣大網(wǎng)友查閱!

TreePanel為ExtJS提供了一個方便的樹結(jié)構(gòu)數(shù)據(jù)展示,尤其是在處理JSON格式數(shù)據(jù)時十分常用,接下來我們就來看兩則JavaScript的ExtJS框架中數(shù)面板TreePanel的使用實例解析

在ExtJS中,不管是葉子節(jié)點還是非葉子節(jié)點,都統(tǒng)一用TreeNode表示樹的節(jié)點。在ExtJS中,有兩種類型的樹節(jié)點。一種節(jié)點是普通的簡單樹 節(jié)點,由Ext.tree.TreeNode定義,另外一種是需要異步加載子節(jié)點信息的樹節(jié)點,該類由Ext.tree.AsyncTreeNode定 義。

在數(shù)據(jù)中, text 顯示文字, leaf 節(jié)點 , children 子節(jié)點,expanded 展開

var store = Ext.create(‘Ext.data.TreeStore', {

root: {

expanded: true,

children: [

{ text: “留學(xué)”, leaf: true },

{ text: “功課”, expanded: true, children: [

{ text: “英語”, leaf: true },

{ text: “代數(shù)”, leaf: true}

] },

{ text: “托?!? leaf: true }

]

}

});

TreePanel從servlet中讀取JSON數(shù)據(jù)

在Ext JS的Tree中的數(shù)據(jù)往往是從服務(wù)器端的動態(tài)程序中獲取的。

為了獲取數(shù)據(jù),我們可以先編寫一個返回JSON的Servlet共前臺的樹形組建訪問:

服務(wù)器端servlet代碼:

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

public class TreeNodeServlet extends HttpServlet {

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

//這里的node是前臺的AsyncTreeNode組建中設(shè)置的ID,見下面的JS程序

String treeNode = request.getParameter("node");

String json = "";

PrintWriter out = response.getWriter();

if("0".equals(treeNode)) {

json+="[{id:1,text:'0-1'},{id:2,text:'0-2'}]";

}

else if("1".equals(treeNode)) {

json+="[{id:11,text:'0-1-1',leaf:true},{id:12,text:'0-1-2',leaf:true}]";

}

else if("2".equals(treeNode)) {

json+="[{id:21,text:'0-2-1'},{id:22,text:'0-2-2',leaf:true}]";

}

else if("21".equals(treeNode)) {

json+="[{id:211,text:'0-2-1-1',leaf:true},{id:212,text:'0-2-1-2',leaf:true}]";

}

out.write(json);

}

}

現(xiàn)在就可以在前臺的TreePanel組建的loader方法中訪問上面創(chuàng)建的servlet了,代碼如下:

客戶端顯示代碼

Ext.onReady(function(){

var tree = new Ext.tree.TreePanel({

//這里的div-tree是在html中創(chuàng)建的一個對象的id值

el: 'div-tree',

//使用loader方法訪問TreeNodeServlet

loader: new Ext.tree.TreeLoader({dataUrl:'../TreeNodeServlet'})

});

var root = new Ext.tree.AsyncTreeNode({id:'0',text:'0'})

tree.setRootNode(root);

tree.render();

root.expand();

});

效果圖如下:

名單

在樹TreePanel之間拖放結(jié)點

有時候我們在程序中,需要把一棵TreePanel的元素拖放到另外一棵TreePanel中,如果是在同一棵樹中拖動時設(shè)置組件的enableDD參數(shù)為true,而現(xiàn)在需要在不同給的書之間拖動元素,這個時候就可以設(shè)置組件的enableDrag和enableDrop參數(shù),詳細示例如下:

1.編寫JS代碼:

JS代碼

Ext.onReady(function(){

  var tree1 = new Ext.tree.TreePanel({

    el: 'tree1',

 //這里設(shè)置enableDrag為true表示可以從這里拖動元素到別處

    enableDrag:true,

    loader: new Ext.tree.TreeLoader({dataUrl: 'treeData1.txt'})

  });

  var tree2 = new Ext.tree.TreePanel({

    el: 'tree2',

 //這里設(shè)置enableDrop為true表示可以在這棵樹中放置拖動過來的元素

    enableDrop:true,

    loader: new Ext.tree.TreeLoader({dataUrl: 'treeData2.txt'})

  });

  var root1 = new Ext.tree.AsyncTreeNode({text:'跟節(jié)點'});

  var root2 = new Ext.tree.AsyncTreeNode({text:'圖書'});

  tree1.setRootNode(root1);

  tree2.setRootNode(root2);

  tree1.render();

  tree2.render();

});

2.HTML代碼如下:

HTML代碼

<div id="tree1"></div>

<div id="tree2"></div>

3.編寫兩個TreeLoader需要裝載的txt文件,里面的數(shù)據(jù)為JSON格式:

treeData1.txt:

[

    {text:'非葉子結(jié)點'},

    {text:'葉子結(jié)點',leaf:true}

]

treeData2.txt:

[

  {text:'計算機',children:[

    {text:'Java',children:[

      {text:'Java核心技術(shù)',leaf:true},

      {text:'Thinking in Java',leaf:true}

    ]},

    {text:'算法導(dǎo)論',leaf:true}

  ]},

  {text:'音樂',children:[

    {text:'樂理基礎(chǔ)',leaf:true},

    {text:'卡爾卡西古典吉他教程',leaf:true}

    ]}

]

4.程序效果如下圖所示:

名單

更多信息請查看網(wǎng)絡(luò)編程

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)