gpt4 book ai didi

c# - 将 ASP.NET TreeView 控件绑定(bind)到数据集

转载 作者:太空狗 更新时间:2023-10-29 20:42:30 26 4
gpt4 key购买 nike

MSDN他们说 TreeView 控件(“绑定(bind)到数据”段落):

The TreeView control can also be bound to an XmlDocument object or aDataSet object with relations. To bind to one of these data sources,set the DataSource property of the TreeView control to the datasource, and then call the DataBind method.

所以在一个只有 TreeView 的简单 WebForms 页面中,我写道:

     DataSet ds = new DataSet();
DataTable dt = new DataTable("Masters");
ds.Tables.Add(dt);
dt.Columns.Add("MasterId", typeof(Int32));
dt.Columns.Add("Name", typeof(String));
DataTable dt1 = new DataTable("Details");
ds.Tables.Add(dt1);
dt1.Columns.Add("DetailId", typeof(Int32));
dt1.Columns.Add("MasterId", typeof(Int32));
dt1.Columns.Add("Name", typeof(String));

DataRow rw;
DataRow rw1;
for (int i = 0; i < 5; i++)
{
rw=dt.NewRow();
dt.Rows.Add(rw);
rw["MasterId"] = i;
rw["Name"] = "Master Name " + i.ToString();
for (int j = 0; j < 10; j++)
{
rw1 = dt1.NewRow();
dt1.Rows.Add(rw1);
rw1["DetailId"] = i * 5 + j;
rw1["MasterId"] = i;
rw1["Name"] = "Detail Name " + j.ToString() + " of Master Name "+ i.ToString();
}
}
ds.Relations.Add(new DataRelation("Masters_Details",dt.Columns["MasterId"], dt1.Columns["MasterId"]));
TreeView1.DataSource = ds;
TreeView1.DataBind();

但是在我设置 DataSource 的那一行它抛出异常:

HierarchicalDataBoundControl 仅接受实现 IHierarchicalDataSource 或 IHierarchicalEnumerable 的数据源。

我知道发生这种情况是因为数据集没有实现这样的接口(interface)......那么为什么他们写的是可以绑定(bind)到“具有关系的数据集”?提前谢谢你

最佳答案

这段代码展示了如何从分层表转到 TreeView。这里没有什么复杂的东西,但需要一些技巧才能让它发挥作用。

第一个技巧是按 ParentID 对记录进行排序。在其父节点在树中之前,我们无法将节点插入树中。这意味着一种特殊情况,即必须首先插入树的根节点,因为它没有父节点。

这是示例数据:

// Create the DataTable and columns
DataTable ItemTable = new DataTable("MyTable");
ItemTable.Columns.Add("ID" , typeof(int ));
ItemTable.Columns.Add("ParentID", typeof(int ));
ItemTable.Columns.Add("Name" , typeof(String));

// add some test data
ItemTable.Rows.Add(new object[] { 0,-1, "Bill Gates" });
ItemTable.Rows.Add(new object[] { 1, 0, "Steve Ballmer" });
ItemTable.Rows.Add(new object[] { 3, 1, "Mary Smith" });
ItemTable.Rows.Add(new object[] { 2, 0, "Paul Allen" });
ItemTable.Rows.Add(new object[] { 4, 2, "Ahmed Jones" });
ItemTable.Rows.Add(new object[] { 5, 2, "Wing Lee" });

// Use the Select method to sort the rows by ParentID
DataRow[] SortedRows;
SortedRows = ItemTable.Select("", "ParentID");

希望对你有用,

关于c# - 将 ASP.NET TreeView 控件绑定(bind)到数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com