如何使用ASP.NET显示层次数据?

时间:2009-06-08 13:01:19

标签: asp.net listview treeview

如何在ASP.NET中显示Hierarical数据?我有一个如下所示的数据源:

class Tree
{
   IEnumerable<Node> Nodes { get; set; }
}

class Node
{
   string Description { get; set; }
   decimal Amount { get; set; }
   IEnumerable<Node> SubNodes { get; set; }
}

我想渲染为div的列表,如下所示。我需要div标签来扩展和折叠分支时使动画变得平滑。

<ul class="foldable">
   <li>
      <div class="line">
         <div class="description">...</div>
         <div class="amount">...</div>
      </div>
      <div class="line">
         <div class="description">...</div>
         <div class="amount">...</div>
      </div>
      <ul>
         <li>
            <div class="line">
              <div class="description">...</div>
              <div class="amount">...</div>
            </div>
         </li>
      </ul>
   </li>
</ul>
  • 我尝试使用ListView元素构建它,但我无法弄清楚如何递归调用它。
  • 我还查看了TreeView类,但删除了它,因为它是使用表格呈现的。
  • 我放弃了CSS Friendly Control Adaptors,因为这似乎是网站上所有控件的一个或切换。
  • 我尝试使用BulledList,但无法弄清楚如何渲染div。

我最终使用了四个相同的嵌套ListView元素,因为我知道我的列表永远不会超过四个级别。但是这个解决方案太难看了,我希望能在这里找到更好的解决方案。 =)

1 个答案:

答案 0 :(得分:3)

您可以使用转发器控件,然后循环浏览列表,并为每个有子节点的节点嵌套另一个转发器。这需要一些努力,因为你需要以编程方式使用它,但是使用预先构建的Repeater控件作为服务器控件会使它更容易。

我喜欢使用中继器,因为当你花些时间和它们一起工作时,它们非常灵活。那,他们并没有放入无关的HTML。 :)