zTree异步调用
前台代码
<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 + "]");