前台代碼
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="/scripts/Ztree/script/jquery-1.4.2.js" type="text/javascript"></script> <link href="/scripts/Ztree/style/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" /> <link href="/scripts/Ztree/style/demoStyle/demo.css" rel="stylesheet" type="text/css" /> <script src="/scripts/Ztree/script/jquery.ztree-2.6.js" type="text/javascript"></script> <script type="text/javascript"> var zTree; // var type="CognosConnectionString"; // //獲取參數 // var Request = new Object(); // Request = GetRequest(); // if (Request['type'] != null && Request['type'] != "") // type = Request['type']; var demoIframe; //setting 是 zTree 的全部設置參數集合,采用 JSON 結構,便於靈活配置 var setting = { isSimpleData: true, treeNodeKey: "id", //設置節點唯一標識屬性名稱 treeNodeParentKey: "pId", //設置節點的父節點唯一標識屬性名稱 nameCol: "name", //設置 zTree 顯示節點名稱的屬性名稱,此處默認為Name showLine: true, //在樹型中是否顯示線條樣式 root: { //zTree數據節點的根,全部節點數據都處於 root.nodes 內 isRoot: true, nodes: [] }, async: true, asyncUrl: "AjaxHandle/GetTableField.ashx?type=<%=type %>&time="+Math.random(), asyncParam: ["id","pId","name"], //異步調用時傳到后台的參數 callback:{ asyncSuccess: zTreeOnAsyncSuccess } }; var treeNodes = [<%= NodesData%>]; $(document).ready(function() { zTree = $("#treeid").zTree(setting, treeNodes); }); function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) { } //讀取URL function GetRequest() { var url = location.search; //獲取url中"?"符后的字串 var theRequest = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for (var i = 0; i < strs.length; i++) { theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return theRequest; } function url(type) { window.location.href = "SQL.aspx?type=" + type.value; } </script> </head> <body> <form id="form1" runat="server"> <div> <ul id="treeid" class="tree" > </ul> </div> </form> </body> </html>
后台代碼:第一次調用一級數據
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request["type"] != null) type = Request["type"].ToString(); List<string> treenodes = new List<string>(); DataTable dt = new SystemClass(type).GetTableName(); for (int i = 0; i < dt.Rows.Count; i++) { //此處為了簡化,並沒有查詢此級的類別是否有子類.直接設置 'isParent':true string node = string.Format("{{ \"id\":{0}, \"pId\":{1}, \"name\":\"{2}\",\"url\":\"\",\"isParent\":true}}", dt.Rows[i]["id"], dt.Rows[i]["ParentID"], dt.Rows[i]["name"]); treenodes.Add(node); } string Strtest = string.Join(",", treenodes.ToArray()); NodesData.Append(Strtest); } }
GetTableField.ashx
異步調用返回的JOSON值
context.Response.ContentType = "text/plain"; string parentId = context.Request["id"]; string type = context.Request["type"]; List<string> treenodes = new List<string>(); StringBuilder NodesData = new StringBuilder(); DataTable dt = new SystemClass(type).GetTableFieldByParentid(parentId); for (int i = 0; i < dt.Rows.Count; i++) { //此處為了簡化,並沒有查詢此級的類別是否有子類.直接設置 'isParent':true string node = string.Format("{{ \"id\":{0}, \"pId\":{1}, \"name\":\"{2}\",\"url\":\"\",\"isParent\":false}}", dt.Rows[i]["id"], dt.Rows[i]["ParentID"], dt.Rows[i]["name"]); treenodes.Add(node); } string Strtest = string.Join(",", treenodes.ToArray()); NodesData.Append(Strtest); context.Response.Write("[" + NodesData + "]");