Trong MSDN họ nói về điều khiển TreeView ("Ràng buộc để dữ liệu" đoạn):Binding ASP.NET TreeView kiểm soát để một Dataset
Việc kiểm soát TreeView cũng có thể được liên kết với một đối tượng XmlDocument hay DataSet đối tượng có quan hệ. Để liên kết với một trong các nguồn dữ liệu này, đặt thuộc tính DataSource của điều khiển TreeView thành nguồn dữ liệu và sau đó gọi phương thức DataBind.
Vì vậy, trong một trang WebForms đơn giản với chỉ một TreeView i đã viết:
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();
Nhưng trong dòng nơi tôi đặt DataSource nó ném ngoại lệ:
HierarchicalDataBoundControl chỉ chấp nhận các nguồn dữ liệu mà thực hiện IHierarchicalDataSource hoặc IHierarchicalEnumerable.
Tôi hiểu điều này xảy ra vì DataSet không thực hiện giao diện như vậy ... vậy tại sao họ viết có thể liên kết với "DataSet with relations"? Cảm ơn bạn trước
Có thể hữu ích: http://www.codeproject.com/Articles/25753/Binding-the-ASP -NET-TreeView-to-a-DataSet-or-an-Ob Mặc dù, nó không giải thích ngôn ngữ trong tài liệu. –
tks tôi đọc bài viết đó .... và rất nhiều trong số đó, nơi TreeView đã điền nút bằng nút ... nhưng điểm mấu chốt của câu hỏi của tôi là ** tại sao ** họ nói là có thể theo cách riêng. –
Trong trường hợp như vậy trên MSDN, tôi thường đánh giá chủ đề không hữu ích và sau đó đưa ra giải thích về lý do của tôi hoặc những gì nên ở đó thay thế. ví dụ: ví dụ cho trường hợp đó, bạn có thể nghĩ ra điều gì gần nhất. –