日期:2014-05-18  浏览次数:20446 次

无级菜单的取全部子 节点 和前端绑定问题
有这样一个数据库结构 常用的无级菜单结构设计
Id Name Pid
1 菜单1 0
2 菜单2 0
3 菜单1-1 1
4 菜单1-2 1
5 菜单2-1 2
6 菜单1-1-1 3

这边遇到了几个问题,如果我想取某个节点下的全部 子节点,好比如说 我要 Id为 (1) 下的全部子节点,得到的结果应该是
3 菜单1-1 1
4 菜单1-2 1
6 菜单1-1-1 3
如何取呢? 目前个人思路是 把数据全部取出缓存,通过Pid 多循环判断,也可以用递归让代码量更少。
不过这两我想试试 能不能单循环 就搞定呢?

还有就是 取出数据 DataTable 如何在前端绑定 Repeater (不想用 .net 自带的tree)
<Repeater>
<dl>
<dt>菜单1-1</dt>
<Repeater>
<dd>菜单1-1-1</dd>
<dd>菜单1-1-2</dd>
</Repeater>
</dl>
</Repeater>
类似这样的格式,如何绑定。 PS:Repter 有个 绑定事件,那个需要多次取数据,能否一定搞定呢?

------解决方案--------------------
用Repeater绑定由于不知道你的子层有多少层,不适合。这里用了Treeview,或者你可以自己拼接html显示。
HTML code
    <asp:TreeView ID="TreeView1" runat="server">
    </asp:TreeView>