将DataTable转换成EasyUITree的json格式 ---四级树

       

 #region DataTable转EasyUiTree的Json格式  
        /// <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)
        {
            AlarmManagerBLL AlarmManagerSystemBLL = new AlarmManagerBLL();
            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 filterAlarm = string.Format("{0}='{1}'", "system_id", 3);
                DataRow[] drAlarm = dt.Select(filterAlarm);
                string systemid = drAlarm[0]["system_id"].ToString();
                DataTable dtAlarm = AlarmManagerSystemBLL.GetSystemDomain(int.Parse(systemid));
                //拼接到父节点下
                if (dtAlarm.Rows.Count < 1)
                {
                    return "";
                }
                else
                {
                    sb.Append(",\"children\":[");
                 
                    foreach (DataRow itemSon in dtAlarm.Rows)
                    {
                        sb.Append("{");
                        sb.AppendFormat("\"id\":\"{0}\",", itemSon["domain_id"].ToString());
                        sb.AppendFormat("\"text\":\"{0}\"", itemSon["domain_name"].ToString());

                        //获取第三级children把表中的Id取出来                      
                        string strDomainType = itemSon["domain_id"].ToString();
                        DataTable dtDomainType = AlarmManagerSystemBLL.GetDeviceType(int.Parse(strDomainType), int.Parse(systemid));
                        if (dtDomainType.Rows.Count >= 1)
                        {
                            sb.Append(",\"children\":[");
                            foreach (DataRow itemDomainType in dtDomainType.Rows)
                            {
                                sb.Append("{");
                                sb.AppendFormat("\"id\":\"{0}\",", itemDomainType["device_type_id"].ToString());
                                sb.AppendFormat("\"text\":\"{0}\"", itemDomainType["device_type_ch_name"].ToString());

                                //获取第四级children把表中的Id取出来
                                string strDeviceType = itemDomainType["device_type_id"].ToString();
                                DataTable dtDeviceType = AlarmManagerSystemBLL.GetDevice(int.Parse(strDeviceType), int.Parse(systemid));
                                if (dtDeviceType.Rows.Count >= 1)
                                {
                                    sb.Append(",\"children\":[");
                                    foreach (DataRow itemDeviceType in dtDeviceType.Rows)
                                    {
                                        sb.Append("{");
                                        sb.AppendFormat("\"id\":\"{0}\",", itemDeviceType["device_id"].ToString());
                                        sb.AppendFormat("\"text\":\"{0}\"", itemDeviceType["device_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("]");
                        }
                        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();

        }
        #endregion

      上面的代码是对如何将datatable格式的数据拼接easyui的树的学习,只是初步了解,如何灵活运用还需要进一步实践。主要的问题在于根据条件从datatable中筛选树的节点。另外就是要注意easyui-tree需要的格式,具体的easyui-tree的js以及html代码就不再展示。在编程的过程中站在巨人的肩膀上是很重要的前提条件,如果想进一步的提升自我,还需要多总结,编辑知识网。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值