EasyUI----DataTable转拼EasyUI Tree

简介: <div class="markdown_views"><p><font size="3">在做系统的时候,有一些组织机构类的关系,成树状结构,前台用的是EasyUI,由于涉及到多张表的数据,想要动态的拼接出一个树状的组织结构,后台传过来的是DataTable。</font></p><pre class="prettyprint"><code class=" hljs

在做系统的时候,有一些组织机构类的关系,成树状结构,前台用的是EasyUI,由于涉及到多张表的数据,想要动态的拼接出一个树状的组织结构,后台传过来的是DataTable。

        /// <summary>
        /// DataTable转EasyUiTree的Json格式 
        /// </summary>
        /// <param name="dt">要转化的表</param>
        /// <param name="pField">父节点对应字段</param>
        /// <param name="pValue">父节点的值,默认为"0"</param>
        /// <param name="idField">ID对应的字段</param>
        /// <param name="nameField">Name对应的字段</param>
        /// <param name="isParentField">是否是父节点对应的字段</param>
        /// <param name="isChooseParentNode">是否选择父节点,有单选框、复选框的时候用;true:checkbox radio 可以选择父节点/子节点;false:radio 只能选择叶子节点</param>
        /// <returns></returns> 
        public static string DataTableToJsonElecViewTree(DataTable dt)
        {
            StringBuilder sb = new StringBuilder();
            string filter = string.Format("{0}='{1}'", "system_id", 0);   //获取顶级目录
            DataRow[] drs = dt.Select(filter);
            if (drs.Length < 1 )
            {
                return "";
            }
            sb.Append("[");
            //拼接显示到前台
            foreach (DataRow item in drs)
            {
                sb.Append("{");
                sb.AppendFormat("\"id\":\"{0}\",", item["system_id"].ToString());
                sb.AppendFormat("\"text\":\"{0}\"", item["system_name"].ToString());

                //获取children节点数据
                string filterDoor = string.Format("{0}='{1}'", "system_id", 2);
                DataRow[] drDoor = dt.Select(filterDoor);
                string systemid = drDoor[0]["system_id"].ToString();
                DoorGuardSystemBLL doorGuardSystemBLL = new DoorGuardSystemBLL();
                DataTable dtDoor = doorGuardSystemBLL.GetSystemDomain(int.Parse(systemid));
                //拼接到父节点下
                if (dtDoor.Rows.Count < 1)
                {
                    return "";
                }
                else
                {
                    sb.Append(",\"children\":[");
                    foreach (DataRow itemSon in dtDoor.Rows)
                    {
                        sb.Append("{");
                        sb.AppendFormat("\"id\":\"{0}\",", itemSon["domain_id"].ToString());
                        sb.AppendFormat("\"text\":\"{0}\"", itemSon["domain_name"].ToString());
                        sb.Append("},");
                    }
                    if (sb.ToString().EndsWith(","))
                    {
                        sb.Remove(sb.Length - 1, 1);
                    }
                    sb.Append("]");
                }
                sb.Append("},");
            }


            if (sb.ToString().EndsWith(","))
            {
                sb.Remove(sb.Length - 1, 1);
            }
            sb.Append("]");
            return sb.ToString();

        }

拼接Tree的时候,一定要注意一些标点的东西,错了的话他也不会给提示,但也不显示数据,考验细心的地方。

刚开始拼的时候,一点头绪都没有,在网上搜的赶脚有点复杂,看不懂,然后自己就一级一级的往下拼,虽然说现在的循环有点多,而且这只是两层的结构,但是自己摸索出来的东西就是有成就感,以后再优化,先这么用着。大家也可以试试!

相关文章
easyui的tree节点的获取和选中
easyui的tree节点的获取和选中
243 0
|
数据库
easyui03(tree后台工作)
easyui03(tree后台工作)
|
缓存 前端开发
easyui02(tree前端工作)
easyui02(tree前端工作)
easyui tree 默认选中第一个元素
easyui tree 默认选中第一个元素
103 0
|
Web App开发 前端开发 JavaScript
|
JSON 前端开发 数据格式
EasyUI–树形控件tree详解
树形控件还是经常使用的,比如菜单、部门管理等涉及到有归属关系的功能经常在前端页面采用树形结构表示。 EasyUI对树形控件的封装非常的Nice,尤其是对复选框的支持简直是漂亮异常。本篇就最常用的菜单数为例演示EasyUI中tree的使用。 先看示意图:
633 0
EasyUI–树形控件tree详解
|
JSON 前端开发 JavaScript
|
JSON JavaScript 前端开发