我有一个类似的数据库:
| Element_ID | Element_Parent |
|____________1_____________|_______________0_______________|
|____________2_____________|_______________0_______________|
|____________3_____________|_______________1_______________|
|____________4_____________|_______________3_______________|
|____________5_____________|_______________3_______________|
|____________6_____________|_______________2_______________|
|____________7_____________|_______________6_______________|
|____________8_____________|_______________6_______________|
其中Element_Parent引用Element_ID列,0表示该元素没有父元素。
我需要显示与此类似的数据库条目:
<ul>
<li>
1
<ul>
<li>
3
<ul>
<li>4</li>
<li>5</li>
</ul>
</li>
</ul>
</li>
<li>
2
<ul>
<li>
6
<ul>
<li>7</li>
<li>8</li>
</ul>
</li>
</ul>
</li>
</ul>
我正在使用DynamicRecords访问数据库。
答案 0 :(得分:0)
如果你想要一个服务器端解决方案,你应该能够从我在ASP.NET网页中使用递归编写的这篇文章中获得一些有用的东西:http://www.mikesdotnetting.com/Article/208/Practical-Recursion-in-ASP.NET-Web-Pages-with-WebMatrix。
但实质上,你需要一个像这样的帮手:
@helper BuildTreeView(IEnumerable<dynamic> data, int? parentid = null, int level = 0) {
var nodes = data.Where(n => n.ParentId == parentid).OrderBy(n => n.DisplayOrder);
if (nodes.Any()) {
if(nodes.First().ParentId != null){
level++;
}
foreach (var node in nodes) {
<div style="padding-left:@(level * 20)px;">
@node.Text
</div>
@BuildTreeView(data, node.Id, level);
}
}
}
我添加了一个DisplayOrder列,以便您可以添加和删除数据库中的项目,并仍然控制它们在各个节点中的显示顺序。