2 qq 19755427 qq_19755427 于 2015.06.01 16:39 提问

怎么在后台拼接easyui tree格式的json数据?大神求教。在线等

首先看一下我的前台代码图片说明

 jQuery(function() {
           $('#tree').tree({
               url: '../Handlers/ECTree.ashx',
               method: 'get',
               animate: true,
           //   data: [{    
           //    "id":19,    
           //    "text":"销售类",    
           //    "iconCls":"icon-save",    
           //    "children": [{
           //        "id":21,
           //        "text": "EC销售类01",
           //        "checked": true,
           //        "children": [{
           //            "id": 23,
           //            "text": "ESC销售类01",
           //            "attributes": {
           //                "url": "/demo/book/abc",
           //                "price": 100
           //            }
           //        }]
           //    },{
           //        "id":22,
           //        "text": "EC销售类02",
           //        "state":"open",    
           //        "attributes":{    
           //            "url":"/demo/book/abc",    
           //            "price":100    
           //        },    
           //        "children": [{
           //            "id": 25,
           //            "state": "open",
           //            "text": "ESC销售类02",
           //            "state": "open",
           //            "children": [{
           //                "id": 27,
           //                "text": "EI销售类01",
           //                "attributes": {
           //                    "url": "/demo/book/abc",
           //                    "price": 100
           //                }
           //            }],
           //             "children": [{
           //                 "id": 28,
           //                 "text": "EI销售类02",
           //                 "attributes": {
           //                     "url": "/demo/book/abc",
           //                     "price": 100
           //                 }
           //             }]
           //        }]
           //    }]    
           //}] , 
               loadFilter: function (data) { 
                   alert(data);
                   if (data.d) {
                       return data.d;
                   } else { 
                       return data;
                   }
               }
           });
       });

我的一般处理文件的代码:

  public void ProcessRequest(HttpContext context)
        {
            IList<EC> ec = ECBLL.GetList();
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("[");
            foreach (EC row in ec)
            {
                if (stringBuilder.Length != 1)
                {
                    stringBuilder.Append(",");
                }
                stringBuilder.Append("{");
                stringBuilder.Append("\"id\":\"" + row.ECID + "\",");
                stringBuilder.Append("\"text\":\"" + row.ECName + "\",");
                stringBuilder.Append("\"children\":\"" + row.ParentID);
                stringBuilder.Append("}");
            }
            stringBuilder.Append("]");
            //stringBuilder.Remove(0, 1);
            //stringBuilder.Remove(stringBuilder.Length-1, 1);
            //JavaScriptSerializer jss = new JavaScriptSerializer();
            //string jsons = jss.Serialize(stringBuilder);
            context.Response.Write(stringBuilder);
        }

我这样写拿到的json数据不对,最外边多了{},而且这样写不能拿到子节点的数据,可能需要更多的判断和逻辑,我是初学者,有没有大神教我?

2个回答

showbo
showbo   Ds   Rxr 2015.06.01 17:14

你的又不是webservice,你增加loadFilter返回d干嘛。。你的是扁平数据,easyui的tree不执行,需要自己处理数据

if (stringBuilder.Length != 1)改成if (stringBuilder.Length > 1),有数据才逗号分隔

然后导入http://blog.csdn.net/superdog007/article/details/21695843这个扩展,给tree配置parentField:'children'就行

注意位置

 <script type="text/javascript" src="../../jquery.easyui.min.js"></script>
    <script>
   那篇文章的代码
     </script>
showbo
showbo 回复莫夕羽心: if (stringBuilder.Length != 1)改成if (stringBuilder.Length > 1)这个你改了没有,没改会导致json格式错误,在前面会多个逗号
2 年多之前 回复
qq_19755427
qq_19755427 回复showbo:我的树显示出来了,不过是不对的,我再遍历拼接字符串的时候代码逻辑写错了。正确的json数据没有拿到。你有拼接字符串的这段代码么?给我参考一下呗。谢啦
2 年多之前 回复
qq_19755427
qq_19755427 回复showbo: 嗯嗯。谢谢你,
2 年多之前 回复
showbo
showbo 回复莫夕羽心: 去掉最外层的{},你的服务器端代码没有最外层的{},怎么最后多出来了,自己看服务器代码写对么有
2 年多之前 回复
qq_19755427
qq_19755427 我拿到的数据格式是这样的,{[{"id":"19","text":"销售类","children":"},{"id":"21","text":"EC销售类01","children":"19},{"id":"22","text":"EC销售类02","children":"19},{"id":"23","text":"ESC销售类01","children":"21},{"id":"25","text":"ESC销售类02","children":"22},{"id":"27","text":"EI销售类01","children":"25},{"id":"28","text":"EI销售类02","children":"25}]} 好像不对啊 。
2 年多之前 回复
showbo
showbo 回复莫夕羽心: http://www.coding123.net/article/20150601/easyui-tree-read-hierarchical-data.aspx可以看这个。。刚写好的示例,记得采纳
2 年多之前 回复
qq_19755427
qq_19755427 谢谢,我去试一下
2 年多之前 回复
llx1943llx
llx1943llx   2015.06.01 19:27

建一个类对应tree中一个节点,然后写一个生成树的算法,把你的数据转成一颗树(当然需要一个类来表示树),最后用json相关工具把这棵树对应的对象转化成json字符串。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!