1. 程式人生 > >EasyUI中tree的使用

EasyUI中tree的使用

       展示樹的方法有很多,在DRP中用過最原始的遞迴的方法,接觸過ztree這次在公司使用的是比較熟悉的easyui,雖然easyui使用的比較多,但是從來沒有用過tree,這次是邊看幫助邊做總結一下其中自己認為的關鍵點。

首先從幫助文件上得知tree中的每個節點包括一下幾個屬性:

  • id:節點ID,對載入遠端資料很重要。
  • text:顯示節點文字。
  • state:節點狀態,'open' 或 'closed',預設:'open'。如果為'closed'的時候,將不自動展開該節點。
  • checked:表示該節點是否被選中。
  • attributes: 被新增到節點的自定義屬性。
  • children: 一個節點陣列聲明瞭若干節點。
  • iconCls:顯示的節點圖示CSS類ID。

       所以在使用的時候要先封住一個tree的類,以上的屬性也是要封裝在tree中的屬性,但是因為要做的樹是一層一層的,這樣就需要每個節點知道自己的父節點,所以在封裝的類中還有新增一個pid,最後封裝出的類是這樣的:

<span style="font-size:18px;">public classTree implements java.io.Serializable{
   public String id;
   public String text;
   public String state="closed";//預設為關閉,不展開子節點的
   public String checked;
   public Object attributes;
   public String iconCls;
   public String pid;
//因為子節點不僅一個,所以使用list
   public List<Tree> children =newArrayList<Tree>();
 
   //改建構函式在進行資料返回時需要用到
   public Tree(String id,Stringpid,String text,String icon,Object obj,boolean haveChild){
      this.id=id;
      this.pid=pid;
      this.text=text;
      this.attributes=obj;
      if(!haveChild){
         this.state="open";
      }
   }
   //每個屬性的get和set略
}</span>
 

       最終要的類封裝完成,這次總前臺開始看整個樹是如何顯示出來的。因為在頁面上tree是以ul-li這樣的頁面標籤展示的,所以在頁面上要如下的定義一個標籤:
<span style="font-size:18px;"><ulid="tree" class="easyui-tree"></ul></span>

       然後再js裡開始控制後臺資料在前臺的展示,程式碼如下:

<span style="font-size:18px;"><script type="text/javascript">
      $(function(){
         $("#tree").tree({
            method:"get",
            url:"test/tree",//這裡寫用來呼叫的後臺的方法           
            onBeforeExpand:function(node,param){
                url:"test/tree?pid="+node.id;
//在節點展開之前觸發,這裡將單擊節點的id傳到後臺,就可以查出所有該節點的子節點,然後展示
            }
         });
      });
   </script></span>

       以上的三個是展示一棵樹所必須的,其他的一些可以根據具體的樹展示的要求使用。前臺的程式碼寫完了之後就是後臺的程式碼,公司使用的是springMVC的框架,controller—>service—>dao,在controller和service層中沒有沒有寫過多的程式碼就是呼叫的關係,比較重要的程式碼是寫在dao層,在dao層整體的邏輯是這樣的:首席從資料庫中查出所有要顯示的資料得到的結果放在list中,這個list的資料想要返回前臺時能夠被以樹的形式展示直接返回list是不行的,因為資料庫中儲存的欄位名和tree的屬性是無法對應的,這時候就需要在分裝一個方法,將從資料庫中返回的結果一一的對應到tree中。

/<span style="font-size:18px;">/從資料庫中得到list
public List<Tree> getTrees() {
      List<Tree>trees=newArrayList<Tree>();
      ListresList=null;//將從資料庫中查到的結果放在改list中
      assembleTree(trees,list, true);
      return trees;
     
     
   }
 
 
//被呼叫的用來例項化tree的
   public voidassembleTree(List<Tree> trees,List<Map> list,boolean haveChild) {
      Stringicon="";//這裡是圖示的名稱,要和自己的css中一樣,前臺才能顯示
      for(Maprecord:list){
         record=lowerMap(record);
         //其中的id,pid,name都是資料庫中的欄位,在new的時候回撥用Tree中國的建構函式,然後將資料庫的資料對應到tree的屬性上,然後在前臺顯示
         Treetree=newTree((String)record.get("id"), (String)record.get("pid"), (String)record.get("name"), icon, record, haveChild)
         trees.add(tree);
      }
   }</span>

       最後返回資料,tree在做展示的時候機可以根據id和pid一層一層的進行展示。

小結

       這次樹的完成讓自己深深的感覺到後臺的程式碼相對好些一些,前臺的除錯比較麻煩,雖然是藉助了第三方份前臺框架有幫助文件單數如果沒有親身的實踐過第一次還是比較困難的,幫助文件中一些詞語的表達都不是特別的明白什麼意思。

相關推薦

easyUItree的預設載入子節點

$(document).ready(function() {     $('#comboboxtree').tree({  /* 傳送請求*/         url : 'comboboxtree?',         onLoadSuccess : function(n

EasyUITree及Datagrid的拼接

Tree的拼接格式 /** * 用於拼接前段tree的json格式 * @param fun * @return List<Functions> * @author youshang520i * @date 建立時間2018年6月20日下午9

easyuitree的父節點id獲取

easyui中使用tree可以完美的展現樹形結構。如下圖 html程式碼如下: 使用cascadeCheck:true為級聯選中子節點,預設值為true。 <ul id="resourceTree" class="easyui-tree" data-options=

遞迴實現EasyUITree的Json格式

                   最近在做學校的基礎系統的時候前臺需要樹形的組織結構,由於前臺的整體框

EasyUItree元件不顯示資料或者顯示undefined的解決方案

這幾天學習easyUI,用到了tree元件,蛋疼了N天,終於出來了,現在總結幾個問題。 1、官方demo裡,取的資料都是在.json檔案裡取的,在實際應用中顯然不能這麼做,要從資料庫中取出,那麼問題來了,怎麼取?官方demo裡也沒有說明,在網上找半天也沒找到什麼結果,現做如

EasyUItree的使用

       展示樹的方法有很多,在DRP中用過最原始的遞迴的方法,接觸過ztree這次在公司使用的是比較熟悉的easyui,雖然easyui使用的比較多,但是從來沒有用過tree,這次是邊看幫助邊做

如何將資料庫存的樹轉化為樹形列表(以easyuitree為例)

很多時候,我們會把一棵樹存放到資料庫中,當前臺需要展示一個樹形列表時,將這棵樹讀取出來並顯示,這個過程是怎麼實現的呢? 這篇文章是以構造一棵easyui前臺框架的一個樹形列表為例,後臺框架是spring MVC+JPA。 首先看一下資料庫中這顆樹是怎麼存的: 樹的結構一目

easyuitree節點的獲取和選中

urn -m selected -a XML target ref easy pre 1.設置選中tree的節點 var node = $(‘#tt‘).tree(‘find‘, 1);//找到id為”tt“這個樹的節點id為”1&ld

easyui datagrid與pagination結合使用【記錄】

fit def ext flag break nowrap isp emp inline /** * Js名稱:客源基本管理 * */ var setPageNumber = 1; var setPageSize = 10; var guestManageLis

easyui的下拉菜單是樹形結構時如何實現onchange方法

問題 input style 出現 發現 class 如果 box ble 今天碰到一個問題就是我寫的代碼中的一個下拉列表顯示的是樹型菜單,代碼如下(使用的是easyui): .... <tr> <td>地區:</td>

(原創)EasyUIdatagrid的行編輯模式,找到特定的Editor,並為其添加事件

detail left order func cell options ble spa add 有時候在行編輯的時候,一個編輯框的值要根據其它編輯框的值進行變化,那麽可以通過在開啟編輯時,找到特定的Editor,為其添加事件 // 綁定事件, index為當前編輯行 v

EasyUi對話框。

meta css hand margin -c link sub content adding html頁面代碼: <head id="Head1" runat="server"> <meta http-equiv="Content-Type" cont

EasyUIeasyui-combobox的onchange事件。

lec cnblogs func select .com obj cti html class html: <select id="cbox" class="easyui-combobox" name="dept" style="width:200px;"&g

easyui的基本驗證大全

isa def int osi per append 格式 on() idc /** * 擴展easyui的validator插件rules,支持更多類型驗證 */ $.extend($.fn.validatebox.defaults.rules, { minLengt

easyuicombobox 取值

pre com 顯示 field pen eas eth eight fun <input id="cmbstrTrainType" class="easyui-combobox" name="cmbstrTrainType" style="width:102px;

EasyUIdatagrid雙擊事件

mat url nbsp cli row lap idt center 雙擊 EasyUI中datagrid雙擊事件 <script type="text/javascript"> $(‘#tableworkbydaydata‘).datagrid({

怎樣設置easyuidatagrid行高

工具欄 ... get gin tle 行高 AC ane 表格 $(‘#face_table2‘).datagrid({ title: ‘信息‘, iconCls: ‘icon-save‘, url: ‘callroll!p

關於easyuidatagrid分頁問題--摘

bool ams 版本 捷信 default table ... Matter agen 首先datagrid中的pagination屬性設置為true: 如 $(‘#dg1‘).datagrid({ url:"{:U(‘Rearlogin/ajaxNoticeA

【linux】linuxtree的安裝

遞歸 進入 href com user sta 分享圖片 1.7 環境 # 2018/7/29 10:17:46測試成功! 一 Tree命令簡介   tree是一種遞歸目錄列表命令,產生一個深度縮進列表文件。 二 Tree命令安裝 1.下載安裝包,地址:http://mam

easyui的option設置selected沒有效果

cti 窗口 ++ bsp cte att 習慣性 點擊 color 在mvc中,使用了easyUI框架,然後我點擊添加新消息的時候彈窗一個新窗口,添加信息。卻發現我的select一直無法設置默認狀態,jq選中,還是直接在添加一條請選擇的option都沒辦法選中,網絡上查找