easyui tree 格式拼接

qq_23172683 2015-09-28 07:00:40









请教一下 这样格式的 json 数据是如何拼接实现的呢! 我想用datatable 拼接
...全文
245 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wx262914 2015-10-09
  • 打赏
  • 举报
回复

public string getJsonAll(List<Mode> list)
        {
            StringBuilder json = new StringBuilder();
            json = json.Replace("{}", "");
            json.Append("[");
            foreach (model dt in list)
            {
                json.Append("{\"id\":\"" + dt.LCode + "\"");
                json.Append(",\"text\":\"" + dt.ExpensesName.Trim().Replace("\\", " ") + "\"");
                //递归子分类方法
                BindNode(dt.LCode, list, json);
                json.Append("},");

            }
            if (l1.Count > 0)
            {
                json.Remove(json.Length - 1, 1);
            }
            json.Append("]");
            return json.ToString();
        }

///// <summary> 
        ///// 采用递归算法创建无限级菜单项 
        ///// </summary> 
        private void BindNode(string lcode, List<model> list, StringBuilder json)
        {
            var lis = //查询条件
            if (lis.Count() > 0)
                json.Append(",").Append("\"children\":[");
            foreach (model dt in lis)
            {
                json.Append("{\"id\":\"" + dt.LCode + "\"");
                json.Append(",\"text\":\"" + dt.ExpensesName.Trim().Replace("\\", " ") + "\"");
                //递归子分类方法
                BindNode(dt.LCode, list, json);
                json.Append("},");
            }
            if (lis.Count() > 0)
            {
                json.Remove(json.Length - 1, 1);
            }
            if (lis.Count() > 0)
                json.Append("]");
        }
Hello World, 2015-10-08
  • 打赏
  • 举报
回复
你的原始数据长什么样子?
qq_23172683 2015-10-08
  • 打赏
  • 举报
回复
引用 9 楼 apollokk 的回复:

    /// <summary>
    /// 将表格转换为JQueryEasyUITreeJson
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="pField">表中的父节点字段</param>
    /// <param name="pValue">表中顶层节点的值,没有 可以输入为"0"</param>
    /// <param name="kField">关键字字段名称</param>
    /// <param name="TextField">要显示的文本对应的字段</param>
    /// <returns></returns>
    public static string toEasyUITreeJson(this DataTable dt, string pField, string pValue, string kField, string TextField)
    {
        string result = TableToEasyUITreeJson(dt, pField, pValue, kField, TextField);
        if (result.Length > 12)
        {
            return result.Substring(12);
        }
        else
        {
            return "";
        }
    }
    ///<summary>
    /// 递归将DataTable转化为适合jquery easy ui 控件tree ,combotree 的 json
    /// 生成的数据需要移除前面12个字符
    ///</summary>
    ///<param name="dt">要转化的表</param>
    ///<param name="pField">表中的父节点字段</param>
    ///<param name="pValue">表中顶层节点的值,没有 可以输入为0</param>
    ///<param name="kField">关键字字段名称</param>
    ///<param name="TextField">要显示的文本对应的字段</param>
    ///<returns></returns>
    public static string TableToEasyUITreeJson(DataTable dt, string pField, string pValue, string kField, string TextField)
    {
        StringBuilder sb = new StringBuilder();
        string filter = String.Format(" {0}='{1}' ", pField, pValue);//获取顶级目录.
        DataRow[] drs = dt.Select(filter);
        if (drs.Length < 1)
            return "";
        sb.Append(",\"children\":[");
        foreach (DataRow dr in drs)
        {
            string pcv = dr[kField].ToString();
            sb.Append("{");
            sb.AppendFormat("\"id\":\"{0}\",", dr[kField].ToString().Replace("\"","\\\""));
            sb.AppendFormat("\"text\":\"{0}\"", dr[TextField].ToString().Replace("\"", "\\\""));
            sb.Append(TableToEasyUITreeJson(dt, pField, pcv, kField, TextField).TrimEnd(','));
            sb.Append("},");
        }
        if (sb.ToString().EndsWith(","))
        {
            sb.Remove(sb.Length - 1, 1);
        }
        sb.Append("]");
        return sb.ToString();
    }
谢谢 但是 我原来就是用的这种方法 实现不了我要的数据格式。
qq175265664 2015-10-08
  • 打赏
  • 举报
回复
TREE使用标准的JSON格式,可以使用动态获取子节点的方法比较简单。
Hello World, 2015-09-30
  • 打赏
  • 举报
回复

    /// <summary>
    /// 将表格转换为JQueryEasyUITreeJson
    /// </summary>
    /// <param name="dt"></param>
    /// <param name="pField">表中的父节点字段</param>
    /// <param name="pValue">表中顶层节点的值,没有 可以输入为"0"</param>
    /// <param name="kField">关键字字段名称</param>
    /// <param name="TextField">要显示的文本对应的字段</param>
    /// <returns></returns>
    public static string toEasyUITreeJson(this DataTable dt, string pField, string pValue, string kField, string TextField)
    {
        string result = TableToEasyUITreeJson(dt, pField, pValue, kField, TextField);
        if (result.Length > 12)
        {
            return result.Substring(12);
        }
        else
        {
            return "";
        }
    }
    ///<summary>
    /// 递归将DataTable转化为适合jquery easy ui 控件tree ,combotree 的 json
    /// 生成的数据需要移除前面12个字符
    ///</summary>
    ///<param name="dt">要转化的表</param>
    ///<param name="pField">表中的父节点字段</param>
    ///<param name="pValue">表中顶层节点的值,没有 可以输入为0</param>
    ///<param name="kField">关键字字段名称</param>
    ///<param name="TextField">要显示的文本对应的字段</param>
    ///<returns></returns>
    public static string TableToEasyUITreeJson(DataTable dt, string pField, string pValue, string kField, string TextField)
    {
        StringBuilder sb = new StringBuilder();
        string filter = String.Format(" {0}='{1}' ", pField, pValue);//获取顶级目录.
        DataRow[] drs = dt.Select(filter);
        if (drs.Length < 1)
            return "";
        sb.Append(",\"children\":[");
        foreach (DataRow dr in drs)
        {
            string pcv = dr[kField].ToString();
            sb.Append("{");
            sb.AppendFormat("\"id\":\"{0}\",", dr[kField].ToString().Replace("\"","\\\""));
            sb.AppendFormat("\"text\":\"{0}\"", dr[TextField].ToString().Replace("\"", "\\\""));
            sb.Append(TableToEasyUITreeJson(dt, pField, pcv, kField, TextField).TrimEnd(','));
            sb.Append("},");
        }
        if (sb.ToString().EndsWith(","))
        {
            sb.Remove(sb.Length - 1, 1);
        }
        sb.Append("]");
        return sb.ToString();
    }
qq_23172683 2015-09-29
  • 打赏
  • 举报
回复
引用 5 楼 binsweet 的回复:
Newtonsoft.Json.dll
这个dll 只是转成json格式,我想要的是 按照一定的格式转成json
  • 打赏
  • 举报
回复
递归如何实现你可以参考下http://bbs.csdn.net/topics/391015868 5楼答案
qq_23172683 2015-09-29
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
不急的话晚上我回去找下以前写的代码,记得我应该copy到家里的电脑上了
嗯,没问题 目前还不急 , 谢谢了
binsweet 2015-09-29
  • 打赏
  • 举报
回复
Newtonsoft.Json.dll
  • 打赏
  • 举报
回复
不急的话晚上我回去找下以前写的代码,记得我应该copy到家里的电脑上了
qq_23172683 2015-09-29
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
public class EasyUITreeNode
{
   public int Id{get;set;}
   public string text{get;set;}
   public EasyUIAttribute attributes{get;set;}
   public List<EasyUITreeNode> children{get;set;}
  //else
}
public class EasyUIAttribute
{
   //补全
}
DataTable是不行的,得通过递归实现
写了 半天 都没写出来 ,大神 能在多给点 代码吗? 我 仿照 java 里面生成的tree 和我这 生成的相差太大。
qq_23172683 2015-09-29
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
public class EasyUITreeNode
{
   public int Id{get;set;}
   public string text{get;set;}
   public EasyUIAttribute attributes{get;set;}
   public List<EasyUITreeNode> children{get;set;}
  //else
}
public class EasyUIAttribute
{
   //补全
}
DataTable是不行的,得通过递归实现
谢谢了, 先照着你给的思路写一下,
  • 打赏
  • 举报
回复
public class EasyUITreeNode
{
   public int Id{get;set;}
   public string text{get;set;}
   public EasyUIAttribute attributes{get;set;}
   public List<EasyUITreeNode> children{get;set;}
  //else
}
public class EasyUIAttribute
{
   //补全
}
DataTable是不行的,得通过递归实现

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧