Easy UI Tree 動態加載tree、異步加載 - 秦嶺過客 - 博客園


引用 http://www.cnblogs.com/puke/archive/2012/08/08/2627820.html

 

剛接觸Easy UI,很多東西還是粗放式的,望理解。

后台采用的是ahsx 

代碼如下:

 Handler.ashx


<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;

publicclass Handler : IHttpHandler {

publicvoid ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
string method = context.Request["action"];
switch (method)
        {
case"GetModule":
                {
string a = context.Request.Params["id"];//參數為id
                    TreeViewCommon treeViewCommon = new TreeViewCommon();

                    context.Response.Write(treeViewCommon.GetModule());
break;
                }
default:
break;
        }
    }

publicbool IsReusable {
get {
returnfalse;
        }
    }
}

 Cs文件如下:TreeViewCommon.cs

publicstring GetModule()

    {
string sql = "SELECT m.ID, m.Name, m.ParentID, m.Url, m.Ico FROM Module m ORDER BY m.Level, m.[Index]";
        DataTable dt = GetTable(sql);
return TableToEasyUITreeJson(dt, "ParentID", "0", "ID", "Name").Substring(12);
    }
///


/// 遞歸將DataTable轉化為適合jquery easy ui 控件tree ,combotree 的 json
/// 該方法最后還要 將結果稍微處理下,將最前面的,"children" 字符去掉.
///
///要轉化的表
///表中的父節點字段
///表中頂層節點的值,沒有 可以輸入為0
///關鍵字字段名稱
///要顯示的文本 對應的字段
///
publicstaticstring TableToEasyUITreeJson(DataTable dt, string pField, string pValue, string kField, string TextField)
    {
        StringBuilder sb = new StringBuilder();
string filter = String.Format(" {0}='{1}' ", pField, pValue);//獲取頂級目錄.
        DataRow[] drs = dt.Select(filter);
if (drs.Length < 1)
return"";
        sb.Append(",\"children\":[");
foreach (DataRow dr in drs)
        {
string pcv = dr[kField].ToString();
            sb.Append("{");
            sb.AppendFormat("\"id\":\"{0}\",", dr[kField].ToString());
            sb.AppendFormat("\"text\":\"{0}\"", dr[TextField].ToString());
            sb.Append(TableToEasyUITreeJson(dt, pField, pcv, kField, TextField).TrimEnd(','));
            sb.Append("},");
        }
if (sb.ToString().EndsWith(","))
        {
            sb.Remove(sb.Length - 1, 1);
        }
        sb.Append("]");
return sb.ToString();

    }

 aspx文件如下:

導入jquery-1.7.2.min.js、jquery.easyui.min.js、和自己的js(我在這里叫tree.js)文件
加入:
    "mytree"class="easyui-tree">

 tree.js文件如下

var dd = '[{"id":"0001","text":"1","children":[{"id":"00010001","text":"4","children":[{"id":"000100010001","text":"7","children":[{"id":"0001000100010001","text":"9","children":[{"id":"00010001000100010001","text":"10","children":[{"id":"000100010001000100010001","text":"11","children":[{"id":"0001000100010001000100010001","text":"12"}]}]}]}]},{"id":"000100010002","text":"8"}]},{"id":"00010002","text":"5"},{"id":"00010003","text":"6"}]},{"id":"0002","text":"2"},{"id":"0003","text":"3"}]';
    $(function () {
        $('#mytree').tree({
//                data: eval(dd)
//                onClick: function (node) {
//                    $('#mytree').tree('beginEdit', node.target);
//                }

            url: 'Handler.ashx?action=GetModule'
        });
    });

 

第二種方式,運用擴展實現一步加載

 擴展內容如下:

(function () {///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////地址:http://git.oschina.net/gson/jeasyuicn-ext/tree/master/ext.easyui/ext.tree/properties.loader//用法://*帶參數初始化//$("#tree").tree({//    url:'tree.do'//    queryParams:{pid:1}//});//*參數變更//$("#tree").tree("setQueryParams",{pid:1});//重寫tree的loader$.extend($.fn.tree.defaults, {    loader: function (param, success, error) {        var opts = $(this).tree("options");        if (!opts.url) {            returnfalse;        }        if (opts.queryParams) {            param = $.extend({}, opts.queryParams, param);        }        $.ajax({            type: opts.method,            url: opts.url,            data: JSON2.stringify(param),            dataType: "text",            contentType: "application/json; charset=utf-8", //application/json            success: function (data) {                success(JSON2.parse(data));            },            error: function () {                error.apply(this, arguments);            }        });    },    queryParams: {}});//設置參數$.extend($.fn.tree.methods, {    setQueryParams: function (jq, params) {        return jq.each(function () {            $(this).tree("options").queryParams = params;        });    }});/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////})(jQuery);

調用方法如下:

//運用擴展實現Tree的異步加載//$("#menu").tree("setQueryParams", { "parentID": 0 });    $("#menu").tree({        url: 'http://ehlccs.cn/ControlServices.svc/GetAsynEasyTree',        queryParams: { "parentID": 0 },        loadFilter: function (data) { //loadFilter 用於webServices、服務等【因為前面多個d】if (data.d) {                return eval('(' + data.d + ')');            } else {                return eval('(' + data + ')');            }        },        onBeforeExpand: function (node) {            $("#menu").tree("setQueryParams", { "parentID": node.id });            $('#menu').tree('options').url = "http://ehlccs.cn/ControlServices.svc/GetAsynEasyTree";        }    });    

數據層方法:

////// 獲取菜單信息,異步加載Tree        //////ParentID///public DataTable GetAsynTree(long parentID)        {            var dataManager = new DataManager("TreeDB", "GetAsynTree");            IOHelper.WriteLine(@"E:\a.txt", parentID.ToString());            dataManager.SetParameters("@ParentID", Convert.ToInt64(parentID));            DataTable dt = new DataTable();            dataManager.ExecuteDataTable(dt);            return dt;        }   #region DataTable轉EasyUiTree的Json格式        ////// DataTable轉EasyUiTree的Json格式 【內部方法,不做過多驗證】        //////要轉化的表///父節點對應字段///父節點的值,默認為"0"///ID對應的字段///Name對應的字段///是否是父節點對應的字段///是否選擇父節點,有單選框、復選框的時候用;true:checkbox radio 可以選擇父節點/子節點;false:radio 只能選擇葉子節點///url對應字段,可以為null  ""///圖片對應字段,可以為null  ""///privatestaticstring CartDataTableToTreeJson1(DataTable dt, string pField, string pValue, string idField, string nameField, string isParentField, bool? isChooseParentNode, string url, string icon)        {            StringBuilder sb = new StringBuilder();            string filter = String.Format(" {0}={1} ", pField, pValue); //獲取頂級目錄.            DataRow[] drs = dt.Select(filter);            if (drs.Length < 1)                return"";            sb.Append(",\"children\":[");            foreach (DataRow dr in drs)            {                IOHelper.WriteLine(@"E:\a.txt", dr[idField].ToString());                string pcv = dr[idField].ToString();                sb.Append("{");                string strIsParent = dr[isParentField].ToString().Trim().ToLower();                //string strIsParent = "false";if (strIsParent.Equals("true"))                {                    if (!string.IsNullOrWhiteSpace(url))                    {                        sb.AppendFormat("\"id\":\"{0}\",", dr[idField].ToString().Trim() + "," + dr[url].ToString().Trim());                    }                    else                    {                        sb.AppendFormat("\"id\":\"{0}\",", dr[idField].ToString().Trim());                    }                }                else                {                    sb.AppendFormat("\"id\":\"{0}\",", dr[idField].ToString().Trim());                }                sb.AppendFormat("\"text\":\"{0}\",", dr[nameField].ToString().Trim());                if (!string.IsNullOrWhiteSpace(icon))                    sb.AppendFormat("\"iconCls\":\"{0}\",", dr[icon].ToString().Trim());                //if (strIsParent.Equals("false"))                //    if (!string.IsNullOrWhiteSpace(url))                //    {                //        sb.Append("\"attributes\":{");                //        sb.AppendFormat("\"url\":\"{0}\",", dr[url].ToString().Trim());                //        sb.Append("},");                //    }                //if (isChooseParentNode.Equals(false))                //    if (strIsParent.Equals("true"))                //        sb.AppendFormat("\"nocheck\":\"{0}\",", true);                sb.AppendFormat("\"state\":\"{0}\"", strIsParent.Equals("true") ? "open" : "closed");                sb.Append(CartDataTableToTreeJson1(dt, pField, pcv, idField, nameField, isParentField, isChooseParentNode, url, icon).TrimEnd(','));                sb.Append("},");            }            if (sb.ToString().EndsWith(","))            {                sb.Remove(sb.Length - 1, 1);            }            sb.Append("]");            return sb.ToString();        }        #endregionSQL語句:"GetAsynTree" CommandType="Text"  CommandDescrip="獲取菜單信息,異步加載Tree">    [CDATA[       --DECLARE @ParentID BIGINT        --SET @ParentID = 0        DECLARE @IsLeafNode BIT        SET @IsLeafNode = 0        SELECT m.ID, m.Name, m.[Url], m.Icon, m.[Level], m.[Index], m.IsEnabled,m.ParentID, m.SecondAncestorID,isnull(n.ChildNodesNumber,0) ChildNodesNumber,isnull(n.IsLeafNode,1) IsLeafNode FROM Module m        LEFT  JOIN         (        SELECT ParentID ID,COUNT(ParentID) ChildNodesNumber, @IsLeafNode IsLeafNode FROM Module        GROUP BY ParentID        ) n        ON m.ID=n.ID        WHERE  ParentID=@ParentID      ]]>    "@ParentID" DbType="Int64"/>    


免責聲明!

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



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