从类别和子类别及其子类别构建树结构
问题描述:
我需要在类别和子类别之间开发树结构。我正在使用处理程序来生成关系。从类别和子类别及其子类别构建树结构
例如我的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
等
要使用递归程序whih将循环thorugh做进出口公司儿童类别。
但是如何添加树结构并将其发送回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>
答
你可以做的是,而不是使用1000使用空。这将意味着该类别没有父母(而不是Id = 1000的父母)。
然后,映射关系(范畴家长和IList的儿童),你就可以做到这一点:
var parents = db.Categories.Where(x => x.Parent == null);
和类别自理会是你想要的树状结构,你将能够使用任何JSON序列化器。
嗨我认为父母身份没有任何区别,因为它可以保留为空或1000.但Im努力在添加子类别列表及其子以嵌套方式输出上述JSON格式。我努力获得那个输出。谢谢 – user840491 2012-04-02 16:45:51
当EF尝试使用Id 1000查找父项时,它是有意义的。同样从数据库的角度来看,如果您放入1000,您将无法使用参考完整性,您将无法将FK那里。如果你有对象模型,那么任何JSON序列化器都可以完成这项工作。 – ivowiblo 2012-04-03 12:29:30