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

页面导航:首页 > 网络编程 > JavaScript > 新手学Jquery EasyUI----DataTable转拼EasyUI Tree

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

来源: 作者: 时间:2016-01-19 18:32 【

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

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

        /// 
        /// DataTable转EasyUiTree的Json格式 
        /// 
        ///要转化的表
        ///父节点对应字段
        ///父节点的值,默认为0
        ///ID对应的字段
        ///Name对应的字段
        ///是否是父节点对应的字段
        ///是否选择父节点,有单选框、复选框的时候用;true:checkbox radio 可以选择父节点/子节点;false:radio 只能选择叶子节点
        ///  
        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(	ext:{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(	ext:{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的时候,一定要注意一些标点的东西,错了的话他也不会给提示,但也不显示数据,考验细心的地方。

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

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<