码迷,mamicode.com
首页 > Web开发 > 详细

新手学Jquery EasyUI----DataTable转拼EasyUI Tree

时间:2015-07-31 20:24:56      阅读:498      评论:0      收藏:0      [点我收藏+]

标签:easyui   tree   datatable   

在做系统的时候,有一些组织机构类的关系,成树状结构,前台用的是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的时候,一定要注意一些标点的东西,错了的话他也不会给提示,但也不显示数据,考验细心的地方。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

新手学Jquery EasyUI----DataTable转拼EasyUI Tree

标签:easyui   tree   datatable   

原文地址:http://blog.csdn.net/zlts000/article/details/47173969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!