2 qq 19755427 qq_19755427 于 2015.06.01 15:19 提问

我需要把一张表以easyui树的形式显示,求教

我需要把一张表以easyui树的形式显示,这张表有parentID,看下图图片说明
前台我是这样写的:

 jQuery(function() {
           $('#tree').tree({
               url: '../Handlers/ECTree.ashx',
               method: 'get',
               animate: true,
               loadFilter: function (data) { 
                   alert(data);
                   if (data.d) {
                       return data.d;
                   } else { 
                       return data;
                   }
               }
           });
       });

后台一般处理文件是这样写的,我已拿到该表的实体对象,需要拼接成Tree能识别的json格式的数据,该怎么写呢?

  public void ProcessRequest(HttpContext context)
        {
            StringBuilder stringBuilder = new StringBuilder();
            IList<EC> ec = ECBLL.GetList();
            foreach (EC row in ec)
            {

                stringBuilder.Append("[{");
                stringBuilder.Append("\"id\":\"" + row.ECID+"\",");
                stringBuilder.Append("\"text\":\"" + row.ECName+"\",");
                stringBuilder.Append("\"children\":\"" +row.ParentID); 
                stringBuilder.Append("}]");
            }
            JavaScriptSerializer jss = new JavaScriptSerializer();
            string jsons = jss.Serialize(stringBuilder);
            context.Response.Write(jsons);
        }

2个回答

showbo
showbo   Ds   Rxr 2015.06.01 15:23

自己遍历生成下面类型的数据输出就行


[{
    "id":1,
    "text":"My Documents",
    "children":[{
        "id":11,
        "text":"Photos",
        "state":"closed",
        "children":[{
            "id":111,
            "text":"Friend"
        },{
            "id":112,
            "text":"Wife"
        },{
            "id":113,
            "text":"Company"
        }]
    },{
        "id":12,
        "text":"Program Files",
        "children":[{
            "id":121,
            "text":"Intel"
        },{
            "id":122,
            "text":"Java",
            "attributes":{
                "p1":"Custom Attribute1",
                "p2":"Custom Attribute2"
            }
        },{
            "id":123,
            "text":"Microsoft Office"
        },{
            "id":124,
            "text":"Games",
            "checked":true
        }]
    },{
        "id":13,
        "text":"index.html"
    },{
        "id":14,
        "text":"about.html"
    },{
        "id":15,
        "text":"welcome.html"
    }]
}]

showbo
showbo 回复莫夕羽心: 你可以直接输出扁平数据结构,增加loadFilter将扁平数据结构处理成嵌套格式的,具体看这个:http://blog.csdn.net/superdog007/article/details/21695843
接近 3 年之前 回复
qq_19755427
qq_19755427 大哥,我就是不会怎么遍历成这个格式的。我的问题主要在这里。你可以帮我写一下么?我很需要呀!!!我是初学者不太会
接近 3 年之前 回复
u011376884
u011376884   2015.06.01 15:30
 StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("[");
            foreach (EC row in ec)
            {
                                if(sb.length()!=1){
                                    sb.append(",");
                                }
                stringBuilder.Append("{");
                stringBuilder.Append("\"id\":\"" + row.ECID+"\",");
                stringBuilder.Append("\"text\":\"" + row.ECName+"\",");
                stringBuilder.Append("\"children\":\"" +row.ParentID); 
                stringBuilder.Append("}");
            }
                        stringBuilder.Append("]");

试试这个

u011376884
u011376884 回复莫夕羽心: 你自己试试把children拼出来吧 需要后台查完一级对象的sql后再查children下的所有对象 然后再格式化 children添加时格外调用格式化方法一次
接近 3 年之前 回复
qq_19755427
qq_19755427 回复逝_去_的_光_阴: 啊!!!哦多克
接近 3 年之前 回复
u011376884
u011376884 回复莫夕羽心: 后台拼tree需要的格式比较麻烦 多查查资料和例子吧 我手头没有例子 无能为力
接近 3 年之前 回复
qq_19755427
qq_19755427 回复逝_去_的_光_阴: 哥,我不会加,我没有做过Tree的这个功能,我好迷茫啊。。。。
接近 3 年之前 回复
qq_19755427
qq_19755427 回复逝_去_的_光_阴: 遍历出来就有最外面的{},是不是遍历时还需要一些判断啊,比如判断它是否有子节点,然后对此再拼接字符串,遍历一个树应该不止这么简单吧。
接近 3 年之前 回复
u011376884
u011376884 回复莫夕羽心: 子节点的数据需要单独处理后加到children下的
接近 3 年之前 回复
u011376884
u011376884 回复莫夕羽心: pid别管了 先看看最外面的{}
接近 3 年之前 回复
u011376884
u011376884 回复莫夕羽心: 还想需要pid吧 你拿的数据外面多了{} 不知道从哪儿来的
接近 3 年之前 回复
qq_19755427
qq_19755427 回复逝_去_的_光_阴: 貌似拿到的数据不对呀!那我的子节点的json数据怎么办?应该类似这样的数据[{ "id": 1, "text": "Node 1", "state": "closed", "children": [{ "id": 11, "text": "Node 11" },{ "id": 12, "text": "Node 12" }] },{ "id": 2, "text": "Node 2", "state": "closed" }]
接近 3 年之前 回复
qq_19755427
qq_19755427 回复逝_去_的_光_阴: 我拿到的json数据是这样的{[{"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}]} 没有绑定到Tree上,请问前台我还需要做一些什么操作么?
接近 3 年之前 回复
u011376884
u011376884 回复莫夕羽心: 吓我一跳……你先看看打出来的格式对不对
接近 3 年之前 回复
qq_19755427
qq_19755427 回复逝_去_的_光_阴: 可以点出来了,我现在去试一下看数据绑定到Tree上没。谢谢你,等下还有问题还得再请教你一下。
接近 3 年之前 回复
qq_19755427
qq_19755427 我试了,stringBuilder不能点出length()回复逝_去_的_光_阴:
接近 3 年之前 回复
u011376884
u011376884 回复莫夕羽心: stringBuilder 复制错了
接近 3 年之前 回复
qq_19755427
qq_19755427 请问sb是什么,在那里定义的?
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!