【问题标题】:How to build an ASP.NET TreeView From Scratch...?如何从头开始构建 ASP.NET TreeView...?
【发布时间】:2009-01-15 17:17:31
【问题描述】:

我正在尝试在 ASP.NET 中构建嵌套/线程评论系统。我不知道 PHP 的人是如何做到的。它比最初想象的要难得多。

我正在尽我最大的努力获取分层数据以输出给用户,但它不起作用。

我有一个包含文本、itemID 和 parentID 的表格。

我想以树形视图格式显示信息,但是asp.net的标准控件不起作用...

谁能指出我如何将其输出到树视图的正确方向。我尝试过嵌套中继器,直接从代码隐藏和树视图控件构建 html。

我还没有找到解决办法...谁能帮帮我?

【问题讨论】:

    标签: c# asp.net treeview threaded-comments


    【解决方案1】:

    很快,通过头部(现在无法签入 VS2k8),我会使用 Linq to SQL 来做这样的事情

    private void BuildTree()
    {
       List<Item> items = from item in dataContext.Items
                          select item;
    
       List<Item> rootItems = items.FindAll(p => p.ParentID == null );
    
       foreach ( Item item in rootItems )
       {
          TreeViewNode tvi = new TreeViewNode(item.text);
          BuildChildNodes(tvi, items, item.ID);
          YourTreeNodeName.Nodes.Add(tvi);
       }   
    }
    
    private void BuildChildNodes(TreeViewNode parentNode, List<Item> items, long parentID)
    {
       List<Item> children = items.FindAll ( p => p.ParentID = parentID );
       foreach( Item item in children)
       {
          TreeViewNode tvi = new TreeViewNode(item.text);
          parentNode.Nodes.Add(tvi);
          BuildChildNodes(tvi, items, item.ID);         
       }
    }
    

    【讨论】:

      【解决方案2】:

      据我了解,如果您有一个包含分层数据的数据库表,您有两种选择:创建自己的自定义数据源,或以编程方式将树视图绑定到数据库表。

      我没有适合您的代码,但您可以按照以下步骤操作:

      1. 在asp.net页面中声明treeview控件
      2. 使用您的层次结构数据(SELECT itemID、parentID FROM...)填充 DataTable(通过 SqlDataAdapter)
      3. 使用同一个 DataTable 创建顶级项目的 DataView(parentID 将为空)
      4. 对于 DataView 的每一行,通过过滤另一个 DataView 递归添加树视图项,其中每个 DataViewRow 的 parentID 等于您在步骤 4 中循环的行

      几乎所有这些都是使用 TreeView.Nodes.Add(theNewNode) 完成的,其中 theNewNode 是 TreeNode 对象的一个​​实例

      我知道这一切听起来很令人困惑,但我过去曾这样做过。我在 Stephen Walther ASP.NET Unleashed 这本书中找到了很好的信息,其中有完整的部分致力于实现这一目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多