我想为 ASP.NET 实现分层数据绑定(bind)控件。
我用了Implementing IHierarchy Support Into Your Custom Collection作为创建我的分层集合的基础。我还为集合创建了一个 HierarchicalDataSourceControl。一切正常:我可以将它绑定(bind)到 ASP.NET TreeView 并正确呈现数据。
但是,我卡在了 HierarchicalDataBoundControl 上。我找到了例子,但我对 c#/.Net 还是太陌生了,无法理解它们。我不太明白如何实现示例:
也不
HierarchicalDataBoundControl Class
有没有人有任何提示或更好的例子来实现这样的控件?
最佳答案
作为另一个 DataBound
控件,您必须重写 PerformDataBinding
方法,如下所示。
protected override void PerformDataBinding()
{
base.PerformDataBinding();
if (!IsBoundUsingDataSourceID && this.DataSource == null) return;
HierarchicalDataSourceView view = this.GetData(string.Empty);
if (view != null)
{
IHierarchicalEnumerable root = view.Select();
}
}
虽然您的控件在这种情况下支持 DataSource
和 HierarchialDataSource
控件,但应检查是否有分配的 DataSource
,获取其 DataSourceView
完成数据绑定(bind)。通过GetData
方法即可实现。然后调用view的Select
方法获取根集合。
之后,您必须遍历作为 IHierarchialEnumerable
类型对象的根集合。它有一个名为 GetHierarchyData
的简单方法,该方法提供一个对象(该对象是集合中的一项)并返回描述节点的关联 IHierarchyData
。这个方法就在那里,因此在大多数时候你不知道项目的实际类型。 IHierarchyData
表示有关节点及其子节点的一些信息。
最后,您不需要编写新的 DataSource
控件。如果您在创建自定义导航控件之后,最好为 SiteMapDataSource
编写一个新的提供程序。
关于c# - 为 ASP.NET 实现 HierarchicalDataBoundControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1086295/