jQuery EasyUI-Tree使用

jopen 10年前發布 | 192K 次閱讀 jQuery Ajax框架 jQuery EasyUI

概要


jQuery EasyUIde 樹形菜單控件在頁面上以一個樹形結構顯示分層數據,我們就來看下這些樹形結構是如何顯示的。

 

分類


關于樹形結構顯示的內容有兩種,一種是顯示的內容直接來自于前臺頁面也就是固定的文本,另一種是來自于數據庫,將數據庫里的內容進行提取在頁面進行顯示。

 

第一種


我們先來看第一種將數據直接寫到前臺的方法,我們先來看下效果。

g1.png

 

接下來我們來看下代碼的實現:

  

    <%-- 樹的加載 --%>  
            <divdata-optionsdivdata-options="region:'west',split:true" title="定性指標體系"style="width: 200px;">  
                <divclassdivclass="easyui-accordion"data-options="fit:true,border:false">  

                    <ulidulid="AssessmeObjectTree" class="easyui-tree">  
                        <li>  
                           <span>考核對象</span>  
                            <ul>  
                                <lidata-optionslidata-options="state:'closed'">  
                                   <span>縣市區</span>  
                                    <ul>  
                                        <li>  
                                           <span>縣市區定量</span>  
                                        </li>  
                                        <li>  
                                           <span>縣市區定性</span>  
                                        </li>  

                                    </ul>  
                                </li>  
                                <li>  
                                   <span>市直單位</span>  
                                    <ul>  
                                        <li>  
                                           <span>市直單位定量</span>  
                                        </li>  
                                        <li>  
                                           <span>市直單位定性</span>  
                                        </li>  
                                    </ul>  
                                </li>  
                                <li>  
                                   <span>開發區</span>  
                                    <ul>  
                                        <li>  
                                           <span>開發區數據</span>  
                                        </li>  
                                    </ul>  
                                </li>  
                                <li>  
                                   <span>干部</span>  
                                    <ul>  
                                        <li>  
                                           <span>干部定量</span>  
                                        </li>  
                                        <li>  
                                           <span>干部定性</span>  
                                        </li>  
                                    </ul>  
                                </li>  

                            </ul>  
                        </li>  
                    </ul>  


                </div>  
            </div>  

 

這一種就是將頁面的文字直接顯示到到前臺,一般可以用來做靜態網頁時來用。

 

第二種


將數據庫中的文本獲取到前臺進行顯示,這里需要說下的是,關于前臺的樹加載的文本是有固定的Json格式的文本,也就是說我們從后臺獲取的數據庫中的內容是不能直接顯示的,是需要進行Json的轉換,這樣才可以使前臺順利的顯示我們的文本。

 

我們先來看下頁面樹加載的Json格式的數據是什么樣的:

    [{     
        "id": 1,     
        "text": "Node 1",     
        "state": "closed",     
        "children": [{     
            "id": 11,     
            "text": "Node 11"    
        },{     
            "id": 12,     
            "text": "Node 12"    
        }]     
    },{     
        "id": 2,     
        "text": "Node 2",     
        "state": "closed"    

    }]   

下面就來看下的的實現過程,在這里我們使用了一般處級程序與前臺進行交互,所以我們先來看下我們的前臺與一般應用程序的交互:

 

先來看前臺的代碼:

 

        

    <%-- 樹的加載 --%>  
            <divdata-optionsdivdata-options="region:'west',split:true" title="定性指標體系"style="width: 200px;">  
                <divclassdivclass="easyui-accordion"data-options="fit:true,border:false">  

                    <ul id="TestTree"class="easyui-tree"data-options="url:'SetCharacterizationTargetLevelTree.ashx/ProcessRequest',method:'get',">  

                    </ul>  

                </div>  
            </div>  

 

 

url里寫的就是我們一般處級程序的名稱,我們就是通過url這里與一般處級程序進行交互的,現在我們來看一般處理程序的代碼:

 

    public void Query(HttpContext context)  
           {  


               //組合查詢語句:條件+排序  
               StringBuilder strWhere = newStringBuilder();  

               //先獲取關于班子干部字典表的datatable  
               DataTable dtTreeInfo = newDataTable();  
               //通過調用D層信息獲取  
               DataSet ds =systemDictionaryBLL.GetListTree("");  
               dtTreeInfo = ds.Tables[0];  

               //將字典表的信息與另一張表的信息一起組合轉化成前臺需要的json數據的格式  
               string strJson =getJson(dtTreeInfo);  
              context.Response.Write(strJson);//返回給前臺頁面  
               context.Response.End();  
           }  

 

 

關于如何從數據庫獲取出DataTable這里我們就不贅余了。

 

接下來是關于將DataTable轉化為樹識別的Json格式數據的過程,大家可以照著前面我們需要的Json數據格式來理解下面的代碼:

 

    /// <summary>  
         /// 節點樹的組合  
         /// </summary>  
         /// <paramname="dt">參數為DataTable</param>  
         /// <returns></returns>  
         public string getJson(DataTable dt)  
         {  
             StringBuilder json = newStringBuilder();  
             json.Append("[");  
             foreach (DataRow dr in dt.Rows)  
             {  

                json.Append("{\"id\":" +dr["id"].ToString());  
                json.Append(",\"text\":\"" +dr["name"].ToString() + "\"");  
                json.Append(",\"state\":\"closed\"");  

                 DataTable dtChildren = newDataTable();  


                 //調用D層方法獲取dataTable  
                 DataSet ds =characterizationTargetBLL.GetList(" type='" +dr["name"].ToString() + "'");  
                 dtChildren = ds.Tables[0];  

                 if (dt != null &&dt.Rows.Count > 0)  
                 {  
                    json.Append(",\"children\":[");  
                    json.Append(DataTable2Json(dtChildren,Convert.ToInt32(dr["id"])));  
                     json.Append("]");  
                 }  
                 json.Append("},");  

             }  
             if (dt.Rows.Count > 0)  
             {  
                 json.Remove(json.Length - 1,1);  
             }  
             json.Append("]");  
             return json.ToString();  
         }  

     

 

 

下面我們就來看下我們的效果圖:

g2.png

 

 

到這里我們通過一般處級程序將數據庫獲取的DataTable轉化為我們頁面需要的固定格式的Json數據并在前臺顯示就搞定了。

 

總結


上述兩種,一種是顯示的固定的文本,一種是顯示的數據庫的文本。第一種顯示方法簡單,缺點就是不能很方便的進行變換內容,第二種是可以動態的加載樹,可以針對需要隨時來變,雖然第二種比第一種復雜,但優點也是顯而易見的。

來自:http://blog.csdn.net/zwk626542417/article/details/18700773

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!