基於jQuery的TreeGrid組件詳解


一、TreeGrid組件相關的類

      1、TreeGrid(_config)

            _config:json格式的數據,組件所需要的數據都通過該參數提供。

 

      2、TreeGridItem(_root, _rowId, _rowIndex, _rowData)

            _root:顯示組件實例的目標容器對象。

            _rowId:選中行的id。

            _rowIndex:選中行的索引。

            _rowData:json格式的行數據。

 

二、_config參數詳解

       id:組件實例的id。

       width:組件實例的寬度。

       renderTo:用於顯示組件實例的容器對象的id。一般用div作為容器。

       headerAlign:標題行的對齊方式。

       headerHeight:標題行的高度。

       dataAlign:數據行的對齊方式。

       indentation:層級縮進量。 

       folderColumnIndex:顯示圖標的數據列的索引,從0開始。

       folderOpenIcon:節點展開時的圖標。

       folderCloseIcon:節點關閉時的圖標。

       defaultLeafIcon:葉節點的圖標。

       hoverRowBackground:鼠標滑過數據行時,背景色是否改變。

       itemClick:單擊數據行后觸發的事件。事件方法包含三個參數,分別是:行的id、行的索引、行數據。

       expandLayer:初始展開層數,默認只展開第1層。

       columns:值為數組,數組元素為json對象。定義數據欄相關信息。

               數組元素的屬性:

                        headerText:欄的標題。

                        dataField:欄數據對應的字段名。

                        headerAlign:欄頭對齊方式。

                        dataAlign:欄數據對齊方式。

                        width:欄的寬度。

                        handler:通過指定的方法來自定義欄數據。

                        folderHidden:在文件夾行隱藏單元格值。

       data:組件的數據集。

 

三、TreeGrid的方法

      show:顯示填充數據后的組件對象。

      expandAll:展開、關閉所有節點。該方法有一個參數,參數值為Y時表示展開,參數值為N時表示關閉。

      getSelectedItem:獲取當前選中的數據行,返回TreeGridItem對象。

 

四、TreeGridItem組件

       1、組件屬性

              id:數據行的id。

              index:數據行的索引。

              data:json格式的行數據。

 

       2、組件方法

              getParent:獲取父數據行。方法返回TreeGridItem對象。

              getChildren:獲取子數據行集。方法返回一個數組,數組元素為TreeGridItem對象。

 

五、組件使用范例

Html代碼   收藏代碼
  1. <input type="button" value="關閉所有節點" onclick="expandAll('N')">  
  2. <input type="button" value="展開所有節點" onclick="expandAll('Y')">  
  3. <input type="button" value="取得當前行的數據" onclick="selectedItem()"><br>  
  4. 當前選中的行:<input type="text" id="currentRow" size="110">  
  5.   
  6. <div id="div1"></div>   

 

Js代碼   收藏代碼
  1. <script language="javascript">  
  2.     var config = {  
  3.         id: "tg1",  
  4.         width: "800",  
  5.         renderTo: "div1",  
  6.         headerAlign: "left",  
  7.         headerHeight: "30",  
  8.         dataAlign: "left",  
  9.         indentation: "20",  
  10.         folderOpenIcon: "images/folderOpen.gif",  
  11.         folderCloseIcon: "images/folderClose.gif",  
  12.         defaultLeafIcon: "images/defaultLeaf.gif",  
  13.         hoverRowBackground: "false",  
  14.         folderColumnIndex: "1",  
  15.         itemClick: "itemClickEvent",  
  16.         expandLayer: 1,  
  17.         columns:[  
  18.             {headerText: "", headerAlign: "center", dataAlign: "center", width: "20", handler: "customCheckBox"},  
  19.             {headerText: "名稱", dataField: "name", headerAlign: "center", handler: "customOrgName"},  
  20.             {headerText: "拼音碼", dataField: "code", headerAlign: "center", dataAlign: "center", width: "100"},  
  21.             {headerText: "負責人", dataField: "assignee", headerAlign: "center", dataAlign: "center", width: "100"},  
  22.             {headerText: "查看", headerAlign: "center", dataAlign: "center", width: "50", handler: "customLook", folderHidden: true}  
  23.         ],  
  24.         data:[  
  25.             {name: "城區分公司", code: "CQ", assignee: "", children:[  
  26.                 {name: "城區卡品分銷中心"},  
  27.                 {name: "先鋒服務廳", children:[  
  28.                     {name: "chlid1"},  
  29.                     {name: "chlid2"},  
  30.                     {name: "chlid3", children: [  
  31.                         {name: "chlid3-1"},  
  32.                         {name: "chlid3-2"},  
  33.                         {name: "chlid3-3"},  
  34.                         {name: "chlid3-4"}  
  35.                     ]}  
  36.                 ]},  
  37.                 {name: "半環服務廳"}  
  38.             ]},  
  39.             {name: "清新分公司", code: "QX", assignee: "", children:[]},  
  40.             {name: "英德分公司", code: "YD", assignee: "", children:[]},  
  41.             {name: "佛岡分公司", code: "FG", assignee: "", children:[]}  
  42.         ]  
  43.     };  
  44.   
  45.     /* 
  46.         單擊數據行后觸發該事件 
  47.         id:行的id 
  48.         index:行的索引。 
  49.         data:json格式的行數據對象。 
  50.     */  
  51.     function itemClickEvent(id, index, data){  
  52.         jQuery("#currentRow").val(id + ", " + index + ", " + TreeGrid.json2str(data));  
  53.     }  
  54.       
  55.     /* 
  56.         通過指定的方法來自定義欄數據 
  57.     */  
  58.     function customCheckBox(row, col){  
  59.         return "<input type='checkbox'>";  
  60.     }  
  61.   
  62.     function customOrgName(row, col){  
  63.         var name = row[col.dataField] || "";  
  64.         return name;  
  65.     }  
  66.   
  67.     function customLook(row, col){  
  68.         return "<a href='' style='color:blue;'>查看</a>";  
  69.     }  
  70.   
  71.     //創建一個組件對象  
  72.     var treeGrid = new TreeGrid(config);  
  73.     treeGrid.show();  
  74.       
  75.     /* 
  76.         展開、關閉所有節點。 
  77.         isOpen=Y表示展開,isOpen=N表示關閉 
  78.     */  
  79.     function expandAll(isOpen){  
  80.         treeGrid.expandAll(isOpen);  
  81.     }  
  82.       
  83.     /* 
  84.         取得當前選中的行,方法返回TreeGridItem對象 
  85.     */  
  86.     function selectedItem(){  
  87.         var treeGridItem = treeGrid.getSelectedItem();  
  88.         if(treeGridItem!=null){  
  89.             //獲取數據行屬性值  
  90.             //alert(treeGridItem.id + ", " + treeGridItem.index + ", " + treeGridItem.data.name);  
  91.               
  92.             //獲取父數據行  
  93.             var parent = treeGridItem.getParent();  
  94.             if(parent!=null){  
  95.                 //jQuery("#currentRow").val(parent.data.name);  
  96.             }  
  97.               
  98.             //獲取子數據行集  
  99.             var children = treeGridItem.getChildren();  
  100.             if(children!=null && children.length>0){  
  101.                 jQuery("#currentRow").val(children[0].data.name);  
  102.             }  
  103.         }  
  104.     }  
  105. </script>  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM