C#

 zTree.cs


using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;


/// <summary>
///zTree 的摘要说明
/// </summary>
public class zTree
{
    #region 构造函数
    public zTree()
    {
        //
        
//TODO: 在此处添加构造函数逻辑
        
//
    }
    #endregion


    public string 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 = Common.GetTable(sql);
        string treeJson = DtToJson(dt, "ParentID""0""ID""Name").Substring(12);
        return treeJson;
    }
    //json处理


    public static string DtToJson(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("\"name\":\"{0}\",", dr[TextField].ToString());
            sb.AppendFormat("\"id\":\"{0}\",", dr[kField].ToString());
            sb.AppendFormat("\"pId\":\"{0}\",", dr[kField].ToString());
            sb.AppendFormat("\"url\":\"{0}\",""http://www.baidu.com");
            sb.AppendFormat("\"icon\":\"{0}\",""");
            sb.AppendFormat("\"open\":\"{0}\","true);
            sb.AppendFormat("\"checked\":\"{0}\""false);
     
            sb.Append(DtToJson(dt, pField, pcv, kField, TextField).TrimEnd(','));
            sb.Append("},");
        }
        if (sb.ToString().EndsWith(","))
        {
            sb.Remove(sb.Length - 11);
        }
        sb.Append("]");
        return sb.ToString();
    }
}

 Common.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Web;

/// <summary>
///Class1 的摘要说明
/// </summary>
public class Common
{
    public Common()
    {
        //
        
//TODO: 在此处添加构造函数逻辑
        
//
    }

    public static DataTable GetTable(string sql)
    {
        string strConn = @"Provider=SQLOLEDB;Data Source=127.0.0.1\SQLEXPRESS;Initial Catalog=a;User Id=sa;Password=123456;";
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        using (OleDbConnection conn = new OleDbConnection(strConn))
        {
            if (conn.State != ConnectionState.Open)
                conn.Open();
            OleDbCommand comm = new OleDbCommand(sql, conn);
            OleDbDataAdapter da = new OleDbDataAdapter(comm);
            da.Fill(ds);
            if (conn.State != ConnectionState.Closed)
                conn.Close();
        }
        dt = ds.Tables[0];
        return dt;
    }
}

 Handler.ashx

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

using System;
using System.Web;

public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string method = context.Request["action"];
        switch (method)
        {
            case "GetModule":
                {
                    string a = context.Request.Params["id"];//参数为id
                    zTree zTree = new zTree();

                    context.Response.Write(zTree.GetModule());
                    break;
                }
            default:
                break;
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

 aspx

   <ul id="treeDemo" class="ztree"></ul>

 js


    var setting = {
        data: {
            simpleData: {
                enable: true
            }
        }
    };
     
    function createTree () {
        var zNodes;
        $.ajax({
            url: 'Handler.ashx?action=GetModule'//url  action是方法的名称
            data: { id: "11" },
            type: 'POST',
            dataType: "text"//可以是text,如果用text,返回的结果为字符串;如果需要json格式的,可是设置为json
            ContentType: "application/json; charset=utf-8",
            success: function(data) {
                zNodes = data;

                $.fn.zTree.init($("#treeDemo"), setting, eval('(' + zNodes + ')'));

            },
            error: function(msg) {
                alert("失败");
            }
        });
    }

    $(document).ready(function() {
        createTree();
    });
posted on 2012-08-08 16:53  秦岭过客  阅读(5905)  评论(0编辑  收藏  举报