最近项目用到jQuery EasyUI的tree,由于JSON格式限制
所以要把LIST对象转换为适合tree的JSON格式
[{
id:"",
text:"",
children:[]
},{
id:"",
text:"",
children:[]
}]
已经把全部分类加在出来了,现在要用LINQ进行递归
新建递推实体,构造函数里面把数据库实体传入,构造出生成JSON的实体
public class EasyUiTreeJson {
public EasyUiTreeJson() { }
public EasyUiTreeJson(Component.Entities.J_NewsCategory c) {
id = c.ID;
text = c.Name;
}
public EasyUiTreeJson(Component.Entities.J_NewsCategory c, List<Component.Entities.J_NewsCategory> list) {
id = c.ID;
text = c.Name;
children = (from l in list where l.ParentId == c.ID select new EasyUiTreeJson(l,list)).ToList();//递归
}
public int id { get; set; }
public string text { get; set; }
public List<EasyUiTreeJson> children { get; set; }
}
调用:
int parentid = 0;
List<Component.Entities.J_NewsCategory> cates = Ring.Helper.Reflect.DataTable2Entities<Component.Entities.J_NewsCategory>(Component.DataModule.J_NewsCategory.GetAllChildrenByParentId(parentid));//从数据库取出所有分类
Component.Entities.J_NewsCategory c = new Component.Entities.J_NewsCategory() { ID = 0, Name = "顶级分类" };//新建tree顶级节点
EasyUiTreeJson json = new EasyUiTreeJson(c, cates);//递归
List<EasyUiTreeJson> listJson = new List<EasyUiTreeJson>();
listJson.Add(json);
ctx.Response.Write(Ring.Helper.JSON.Serialize<List<EasyUiTreeJson>>(listJson));//序列化成JSON
ctx.Response.End();