65.9K
CodeProject 正在变化。 阅读更多。
Home

将 ASP.NET TreeView 绑定到 DataSet 或 ObjectDataSource

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.70/5 (16投票s)

2008 年 5 月 2 日

CPOL

1分钟阅读

viewsIcon

155893

downloadIcon

4154

TreeView 无法直接绑定到 DataSet 或 ObjectDataSource。现在,只需一行代码即可实现。

引言

ASP.NET 中的 TreeView 是一种强大的控件,可帮助显示分层数据。但是,与其他控件不同,它不支持绑定到 DataSetObjectDataSource。我见过很多开发者采用老式方法,以编程方式填充树,这既浪费时间又浪费精力。

解决方案

此解决方案的关键在于 TreeView 可以绑定到实现 IHierarchicalDataSource 接口的任何对象。因此,本文向您介绍一个小型类,它将 DataSet 作为输入,并返回一个实现 IHierarchicalDataSource 的对象,以便 TreeView 可以轻松地与您的 DataSet 绑定。

幕后

HierarchicalDataSet 类以层次结构呈现数据,这意味着支持父子关系,就像 TreeView 控件的本质一样。您拥有节点,在某些节点下,您拥有子节点。在数据库中创建此结构涉及让表引用自身以实现父子关系。以下是这样的表的外观

Table

这里有一个快速示例,用于显示一些记录,以了解它们将如何呈现父子关系

DataRow row = dataSet.Tables[0].NewRow();
row["ID"] = 1;
row["Text"] = "Parent 1";
dataSet.Tables[0].Rows.Add(row);

row = dataSet.Tables[0].NewRow();
row["ID"] = 2;
row["Text"] = "Parent 2";
dataSet.Tables[0].Rows.Add(row);

row = dataSet.Tables[0].NewRow();
row["ID"] = 3;
row["ParentID"] = 1;
row["Text"] = "Child 1";
dataSet.Tables[0].Rows.Add(row);

row = dataSet.Tables[0].NewRow();
row["ID"] = 4;
row["ParentID"] = 1;
row["Text"] = "Child 2";
dataSet.Tables[0].Rows.Add(row);

row = dataSet.Tables[0].NewRow();
row["ID"] = 5;
row["ParentID"] = 2;
row["Text"] = "Child 3";
dataSet.Tables[0].Rows.Add(row);

row = dataSet.Tables[0].NewRow();
row["ID"] = 6;
row["ParentID"] = 2;
row["Text"] = "Child 4";
dataSet.Tables[0].Rows.Add(row);

Using the Code

使用代码非常简单。您需要调用接受 DataSet 和两个列名的类的构造函数。主键和外键引用同一个表。

TreeView1.DataSource = new HierarchicalDataSet(dataSet, "ID", "ParentID");

希望这有所帮助。

历史

  • 2008 年 5 月 2 日:初始版本
© . All rights reserved.