1

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

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

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

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

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

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

4

2 回答 2

4

很快,通过头部(现在无法签入 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);         
   }
}
于 2009-01-15T18:06:28.847 回答
0

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

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

  1. 在 asp.net 页面中声明树视图控件
  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 一书中找到了很好的信息,其中有完整的部分致力于实现这一目标。

于 2009-01-15T17:39:33.673 回答