我需要在类别和子类别之间开发树结构。我正在使用处理程序来生成关系。
例如我的SQL表包含
GlobalID for top-level parents 1000 Id CategoryName ParentId 1 toyota 1000 2 ford 1000 5 prius 1 6 prius SP 5 7 prius SP blue 6 8 focus 2 9 mondeo 2 10 mustang 2 11 focus EX 8 ...
所以类别看起来像
toyota prius prius SP prius PS blue yaris auris ford focus focus EX mondeo mustang
等
要做到这一点,我使用一个递归程序,它将循环其子类别。
但是如何添加树结构并将其发送回aspx页面。
我正在使用的代码是
// To get all the parent categories
List<Category> objChildren = new List<Category>();
public List<Category> GetCategories(int categoryId)
{
IQueryable<Category> cats = from ca in db.Categories
where ca.ParentId == categoryId && ca.ParentId != nonPageId
select ca;
return cats.ToList();
}
List<Category> parentCategories = GetCategories(1000);
foreach(Category _category in parentCategories)
{
GetChildCats(_category);
}
public void GetChildCats(Category cat)
{
objChildren.Add(cat);
List<Category> cats = GetCategories(cat.CatId);
if (cats.Count != 0)
{
foreach (Category cate in cats)
{
GetChildCats(cate);
}
}
}
如何将JSON树结构返回到aspx页面,如下所示
</pre>
So the categories looks like
<pre>
[0] => toyota
[0] => prius
[0] => prius SP
[0] => prius PS blue
[1] => yaris
[2] => auris
[1] => ford
[0] => focus
[0] => focus EX
[1] => mondeo
[2] => mustang
</pre>
答案 0 :(得分:0)
你可以做的是代替使用1000使用null。这意味着该类别没有父级(而不是Id = 1000的父级)。
然后,映射关系(Category Parent和IList Children),您将能够执行此操作:
var parents = db.Categories.Where(x => x.Parent == null);
并且类别本身将是您想要的树结构,您将能够使用任何JSON序列化器。