为 ASP.NET 实现 HierarchicalDataBoundControl
我想为 ASP.NET 实现分层数据绑定控件。
我使用 在自定义集合中实现 IHierarchy 支持 作为创建的基础我的分层集合。 我还为该集合创建了一个 HierarchicalDataSourceControl。 一切正常:我可以将其绑定到 ASP.NET TreeView,并且它可以正确呈现数据。
但是,我陷入了 HierarchicalDataBoundControl 的困境。 我找到了示例,但我对 c# / .Net 还太陌生,无法理解它们。 我不太明白如何实现这些示例:
也不是
HierarchicalDataBoundControl 类
有没有人有任何提示或实现这样的控件的更好示例?
I want to implement a Hierarchical data bound control for ASP.NET.
I used Implementing IHierarchy Support Into Your Custom Collection as a basis to create my hierarchical collection. I also created a HierarchicalDataSourceControl for the collection. Everything works: I can bind it to an ASP.NET TreeView and it renders the data correctly.
However, I'm stuck on the HierarchicalDataBoundControl. I found examples, but I am still too new at c# / .Net to understand them. I don't quite understand how to implement the examples:
nor
HierarchicalDataBoundControl Class
Does anyone have any tips, or better examples of implementing a control like this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
作为另一个
DataBound
控件,您必须重写PerformDataBinding
方法,如下所示。虽然您的控件在这种情况下支持
DataSource
和HierarchialDataSource
控件,但应检查是否有分配的DataSource
,并获取其DataSourceView 完成数据绑定。 通过
GetData
方法即可实现。 然后调用视图的Select
方法来获取根集合。然后,您必须迭代根集合,该集合是
IHierarchialEnumerable
类型的对象。 它有一个名为GetHierarchyData
的简单方法,该方法给出一个作为集合项目的对象,并返回一个描述节点的关联IHierarchyData
。 由于存在此方法,因此大多数时候您不知道项目的实际类型。IHierarchyData
表示有关节点及其子节点的一些信息。最后,您不需要编写新的
DataSource
控件。 如果您在创建自定义导航控件后,最好为SiteMapDataSource
编写一个新的提供程序。As another
DataBound
controls you have to overridePerformDataBinding
method as follows.Whereas your control supports
DataSource
andHierarchialDataSource
control in this case, should check if there is an assignedDataSource
, get itsDataSourceView
to accomplish data binding. It's practicable throughGetData
method. Then call view'sSelect
method to get the root collection.Afterwards, you have to iterate through root collection that is an object of type
IHierarchialEnumerable
. It has a simple method calledGetHierarchyData
that gives an object which is an item of the collection and returns an associatedIHierarchyData
that describes a node. This methods is there, therefore in most times you don't know the actual type of item.IHierarchyData
represents some information about a node and its children.Lastly, you don't need to write a new
DataSource
control. If you are after creating a custom navigation control, it's better to write a new provider forSiteMapDataSource
.我遇到了类似的问题并创建了自己的原始 html。
// 准备数据集 DataSet ds
// 请注意,我的类别表具有 C_NAME 和 PC_NAME 列,请根据您的列 anme 更改它
ds.Relations.Add("rsParentChild", ds.Tables[0].Columns["C_NAME"], ds.Tables[0].Columns["PC_NAME"]);
I faced similar problem and created my own raw html.
// Prepare your dataset DataSet ds
// Note That I have Category Table having C_NAME AND PC_NAME coloums, change it as per your column anme
ds.Relations.Add("rsParentChild", ds.Tables[0].Columns["C_NAME"], ds.Tables[0].Columns["PC_NAME"]);