动态生成树通过url返回json
格式为
[
{
id: 1,
text: 'Languages',
children: [
{
id: 11,
text: 'Java'
},
{
id: 12,
text: 'C++'
}
]
}
]);
<select
id="PID" name="PID" class="easyui-combotree" style="width:140px;"
data-options="url:'/Menu/GetTreeMenu',required:true">
</select>@*//通过url获取json集合*@
</td>
后台反回递归加载节点
首先创建tree类
public class Tree {
public Tree() {
children = new List<Tree>();
}
public int id { get; set; }
public string text { get; set; }
public List<Tree> children { get; set;
}
}
递归创建树
public List<Tree> GetTreeMenuList()
{
//查询所有节点
list= Dal.Search(null);
List<Tree> treeList = new List<Tree>();
//启始设置空值
treeList.Add(new Tree() { text = "请选择" });
//查询menu的所有一级节点
List< Menu > menuList = list.Where(x => x.PID == null).ToList();
foreach (Menu item in menuList)
{
Tree t = new Tree();
t.id =item.ID;
t.text = item.Name;
//调用查询子节点的方法
GetSunNode(item.ID,t); treeList.Add(t);
}
return treeList;
}
//添加子节点的方法
public void GetSunNode(int pid,Tree tree)
{
//查询pid和父节点pid对应的子节点
List<Menu> menuList = list.Where(x => x.PID == pid).ToList();
foreach (Menu item in menuList)
{
Tree t = new Tree();
t.id = item.ID;
t.text = item.Name;
GetSunNode(item.ID, t);
//递归调用给自己添加节点
//将子节点添加到父节点中 tree.children.Add(t);
}
}