嵌套式折叠中继器

分享于 

3分钟阅读

Web开发

  繁體

介绍

可以用于. NET 框架的Repeater控件在模板化数据绑定方面做得很好。 但是,它不支持分层数据源的数据绑定。 在 ASP.NET 中,数据绑定实际上将数据绑定到服务器端控件,然后将数据呈现到客户端。 服务器端控件必须支持名为 DataSource的属性和名为 DataBind()的方法,并且控件绑定的数据源实现 IEnumerable ( 用于嵌套数据的IHierarchicalEnumerable ) 接口。

我决定从地面上写一个嵌套中继器。 控件呈现分层数据,如 Treeview,并支持扩展和折叠节点。 每个节点都有一个 header。body和footer组件,每个节点都可以进行模板化。 控件使用组合和呈现的混合来完成作业。 使用组合通常非常昂贵,因为服务器端HTML元素是为每个标签创建的。 所以,我使用组合来呈现 header,正文和页脚,并且呈现所有它的他标签的呈现。 对于客户端行为,我实现了一个 IScriptControl,它基本上管理扩展和折叠节点。

HierarchicalDataSourceControl 派生的任何数据源都可以用于绑定到这里控件;比如。XMLDataSourceSiteMapDataSource

使用代码

<?xmlversion="1.0"encoding="utf-8"?><ItemHeader="Header"Footer="Footer"> Some Text
 <ItemHeader="Header"Footer="Footer">. . .</Item>

可以在ASPX文件中声明转发器,如下所示:

<cc1:RepeaterExID="RepeaterEx1"runat="server"><HeaderTemplate><divstyle="background-color: Red"><%#XPath("@Header")%></div></HeaderTemplate><BodyTemplate><divstyle="background-color: Yellow"><%#XPath("text()")%></div></BodyTemplate><FooterTemplate><divstyle="background-color: Green"><%#XPath("@Footer")%></div></FooterTemplate></cc1:RepeaterEx>
<asp:XmlDataSourceID="XmlDataSource1"runat="server"DataFile="~/XMLFile.xml"></asp:XmlDataSource>

请发表你的意见和建议。

引用


rep  COL  NEST  Nested  
相关文章