代码之家  ›  专栏  ›  技术社区  ›  SpoiledTechie.com

如何从头开始构建ASP.NET树视图…?

  •  1
  • SpoiledTechie.com  · 技术社区  · 16 年前

    我正在尝试在ASP.NET中构建嵌套/线程注释系统。我不知道PHP是怎么做到的。这比最初想象的要困难得多。

    我正在尽我最大的努力将层次结构数据输出给用户,但它不起作用。

    有谁能告诉我如何将其输出到树视图中的正确方向吗。我尝试过嵌套中继器,直接从codebehind和treeview控件构建html。

    2 回复  |  直到 16 年前
        1
  •  4
  •   Henk    16 年前

    很快,通过head(现在无法签入VS2k8),我会使用LINQtoSQL这样做

    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
  •  0
  •   alex    16 年前

    据我所知,如果您有一个包含分层数据的数据库表,那么有两个选项:创建您自己的自定义数据源,或者以编程方式将treeview绑定到数据库表。

    我没有您的代码,但您可以使用以下步骤:

    1. 在asp.net页面中声明treeview控件
    2. 使用您的继承人体系结构数据(选择itemID、parentID FROM…)填充DataTable(通过SqlDataAdapter)
    3. 使用相同的DataTable创建顶级项的DataView(parentID将为null)

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

    我知道这听起来很让人困惑,但我过去也做过。我在Stephen Walther ASP.NET发布的书中找到了非常好的信息,这本书有完整的章节致力于实现这一点。

    推荐文章