asp.net - 如何使用 ASP.NET 显示分层数据?

标签 asp.net listview treeview

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

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

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

我想将 is 渲染为 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 元素,因为我知道我的列表永远不会超过四层。但这个解决方案太丑陋了,我希望在这里找到一个更好的解决方案。 =)

最佳答案

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

我喜欢使用中继器,因为当您花一些时间使用它们时,它们非常灵活。而且他们不会放入无关的 HTML。 :)

关于asp.net - 如何使用 ASP.NET 显示分层数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964799/

相关文章:

c# - command.ExecuteScalar 没有返回我知道存在的值

android - 在 Android 中对 radioGroup 使用 switch-case 和 if-else 有什么区别?

c# - 在 ScrollView 中滚动到选定的 Treeviewitem

wpf - 如何从 WPF TreeView 中删除边框

c# - 如何在不清空 SelectedNode 中的当前节点的情况下使 TreeView.SelectedNode 属性清空?

c# - 在 ASP.net C# 中从 JSON 中检索数组

.net - 是asp.net和.net框架版本相同?还是asp.net或clr版本都一样?

asp.net - Web应用程序中包含的声音无法在IIS中播放

java - 单击时 ListView 选择多个项目

c# - 我如何从选定的 ListView 项目中获取名称?