easyui Tree的使用

1.      获取tree的数据:

                  前端(aspx):

  

  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TreeTest.aspx.cs" Inherits="UI.Sy_Funtion.TreeTest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="stylesheet" type="text/css" href="../themes/default/easyui.css" />
    <link rel="stylesheet" type="text/css" href="../themes/icon.css" />
    <script type="text/javascript" src="../Scripts/jquery-1.8.0.min.js"></script>
    <script type="text/javascript" src="../Scripts/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="../Scripts/locale/easyui-lang-zh_CN.js"></script>
</head>
<body>
     <ul id="tb" class="easyui-tree">
        </ul>
       
      <script>

            $('#tb').tree({
                //url: "Tree.ashx/ProcessRequest",
                              url:"Tree.asmx/getjson",
                loadFilter: function (data) {
                    if (data.d) {
                        return data.d;
                    } else {
                        return data;
                    }
                }
            });  


        </script>
    
   
</body>
</html>
  


 

                     1.tree的数据格式为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"   
}]  

[{    
    "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"   
}]  

         

      2.利用三层在数据库中获取到datable格式数据后转换成tree所需的装换格式,根据服务控件的获取的方法利用递归生成树:

                     1. 服务控件treeview的后台方法(调用为Bind_Tv(tb(), this.TreeView1.Nodes, "0", "Funtion_Id", "Funtion_Pid", "Funtion_name");)

 private void Bind_Tv(DataTable dt, TreeNodeCollection tns, string pid_val, string id, string pid, string text)
        {
            TreeNode tn;
            DataView dv = new DataView(dt);//将DataTable存到DataView中以便于筛选数据
            //建TreeView的节点(TreeNode)以便将取出的数据添加到节点中
            //以下为三元运算符,如果父为空,则为构建父字段is null的查询条件,否则构建父id字段=父id字段值的查询条件
            string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);
            dv.RowFilter = filter;//用DataView将数据进行筛选,选出相同父id值的数据
            foreach (DataRowView drv in dv)
            {
                tn = new TreeNode();//建立一个新节点
                tn.Value = drv[id].ToString();//节点的Value值,一般为数据库的id值
                tn.Text = drv[text].ToString();//节点的Text,节点的文本显示
                tns.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)
                Bind_Tv(dt, tn.ChildNodes, tn.Value, id, pid, text);//递归(反复调用这个方法直到把数据取完为止)
            }
        }


                    2.    easyui tree 的后台代码:

                             tree.ashx:

 public void ProcessRequest(HttpContext context)
        {
            //context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");
            DataTable dt = BF.GetList("").Tables[0];
            string json = getTree(dt, "0", "Funtion_Pid", "Funtion_name", "Funtion_Id");
            json = json.Remove(json.Length - 2, 2);
            context.Response.Write(json);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
        private string getTree(DataTable dt, string id, string ParId_name, string text_name, string id_name)
        {
            StringBuilder stringbuilder = new StringBuilder();
            DataRow[] CRow = dt.Select(ParId_name + "=" + id);
            if (CRow.Length > 0)
            {
                stringbuilder.Append("[");
                for (int i = 0; i < CRow.Length; i++)
                {
                    string chidstring = getTree(dt, CRow[i][id_name].ToString(), ParId_name, text_name, id_name);
                    if (!string.IsNullOrEmpty(chidstring))
                    {
                        stringbuilder.Append("{ \"id\":\"" + CRow[i][id_name].ToString() + "\",\"text\":\"" + CRow[i][text_name].ToString() + "\",\"state\":\"closed\",\"children\":");
                        stringbuilder.Append(chidstring);
                    }
                    else
                    {

                        stringbuilder.Append("{\"id\":\"" + CRow[i][id_name].ToString() + "\",\"text\":\"" + CRow[i][text_name].ToString() + "\"},");

                    }
                }
                stringbuilder.Replace(',', ' ', stringbuilder.Length - 1, 1);
                stringbuilder.Append("]},");
            }
            return stringbuilder.ToString();
        } 

    }


                 Tree.asmx:

                  

 [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public void getjson()
        {
            DataTable dt = BF.GetList("").Tables[0];
            string json=getTree(dt, "0", "Funtion_Pid", "Funtion_name", "Funtion_Id");
            json=json.Remove(json.Length-2,2);
            Context.Response.Write(json);
            


            
        }
       
        private string getTree(DataTable dt, string id, string ParId_name, string text_name, string id_name)
        {
            StringBuilder stringbuilder = new StringBuilder();
            DataRow[] CRow = dt.Select(ParId_name + "=" + id);
            if (CRow.Length > 0)
            {
                stringbuilder.Append("[");
                for (int i = 0; i < CRow.Length; i++)
                {
                    string chidstring = getTree(dt, CRow[i][id_name].ToString(), ParId_name, text_name, id_name);
                    if (!string.IsNullOrEmpty(chidstring))
                    {
                        stringbuilder.Append("{ \"id\":\"" + CRow[i][id_name].ToString() + "\",\"text\":\"" + CRow[i][text_name].ToString() + "\",\"state\":\"closed\",\"children\":");
                        stringbuilder.Append(chidstring);
                    }
                    else
                    {
                      
                            stringbuilder.Append("{\"id\":\"" + CRow[i][id_name].ToString() + "\",\"text\":\"" + CRow[i][text_name].ToString() + "\"},");
                        
                    }
                }
                stringbuilder.Replace(',', ' ', stringbuilder.Length - 1, 1);
                stringbuilder.Append("]},");
            }
            return stringbuilder.ToString();
        } 


    

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值