我怎样才能创建一个基于性能的显示页眉,页脚自定义复读? [英] How can I create a custom Repeater that displays Header, Footer based on properties?

查看:169
本文介绍了我怎样才能创建一个基于性能的显示页眉,页脚自定义复读?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要创建显示基于性能的页眉/页脚,只有当数据源是空的转发器。

 公共类中继器:System.Web.UI.WebControls.Repeater
{
    公共BOOL ShowHeaderOnEmpty {搞定;组; }
    公共BOOL ShowFooterOnEmpty {搞定;组; }    [默认值((字符串)空)
    PersistenceMode(PersistenceMode.InnerProperty)
    TemplateContainer(typeof运算(System.Web.UI.WebControls.RepeaterItem))
    可浏览(假)]
    公开了Itemplate EmptyTemplate {搞定;组; }
}

我也想创建一个 EmptyTemplate ,如果数据源为空,显示此模板...

我对如何实现这个不知道。我应该重写来实现这一行为呢?


解决方案

  [ToolboxData(< {0}:SmartRepeater RUNAT = \\服务器\\>< / { 0}:SmartRepeater>中)]
公共部分类SmartRepeater:直放站
{
    公共BOOL ShowHeaderOnEmpty {搞定;组; }
    公共BOOL ShowFooterOnEmpty {搞定;组; }    私人了Itemplate emptyTemplate = NULL;    [PersistenceMode(PersistenceMode.InnerProperty)
    公开了Itemplate EmptyTemplate
    {
        {返回this.emptyTemplate; }
        集合{this.emptyTemplate =价值; }
    }    保护覆盖无效OnDataBinding(EventArgs的发送)
    {
        base.OnDataBinding(E);
        如果(this.Items.Count == 0)
        {
            this.Controls.Clear();            如果(this.HeaderTemplate = NULL&放大器;!&安培; ShowHeaderOnEmpty)
                this.HeaderTemplate.InstantiateIn(本);            如果(this.EmptyTemplate!= NULL)
                this.EmptyTemplate.InstantiateIn(本);            如果(this.FooterTemplate = NULL&放大器;!&安培; ShowFooterOnEmpty)
                this.FooterTemplate.InstantiateIn(本);
        }
    }
}

用法:

 < UC:SmartRepeater ID =代表=服务器ShowHeaderOnEmpty =真ShowFooterOnEmpty =真>
    <&HeaderTemplate中GT;报头LT; / HeaderTemplate中>
    <&ItemTemplate中GT;项目< / ItemTemplate中>
    &所述; SeparatorTemplate>中&下; / SeparatorTemplate>
    < EmptyTemplate>< B>没有< / B>< / EmptyTemplate>
    < FooterTemplate>&页脚LT; / FooterTemplate>
< / UC:SmartRepeater>

I want to create a Repeater that displays the header/footer based on properties, only if the DataSource is empty.

public class Repeater : System.Web.UI.WebControls.Repeater
{
    public bool ShowHeaderOnEmpty { get; set; }
    public bool ShowFooterOnEmpty { get; set; }

    [DefaultValue((string)null),
    PersistenceMode(PersistenceMode.InnerProperty),
    TemplateContainer(typeof(System.Web.UI.WebControls.RepeaterItem)),
    Browsable(false)]
    public ITemplate EmptyTemplate { get; set; }
}

I also want to create a EmptyTemplate, if the DataSource is empty display this template...

I have no idea on how to implement this. What should I override to achieve this behavior?

解决方案

[ToolboxData("<{0}:SmartRepeater runat=\"server\"></{0}:SmartRepeater>")]
public partial class SmartRepeater : Repeater
{
    public bool ShowHeaderOnEmpty { get; set; }
    public bool ShowFooterOnEmpty { get; set; }

    private ITemplate emptyTemplate = null;

    [PersistenceMode(PersistenceMode.InnerProperty)]
    public ITemplate EmptyTemplate
    {
        get { return this.emptyTemplate; }
        set { this.emptyTemplate = value; }
    }

    protected override void OnDataBinding(EventArgs e)
    {
        base.OnDataBinding(e);
        if (this.Items.Count == 0)
        {
            this.Controls.Clear();

            if (this.HeaderTemplate != null && ShowHeaderOnEmpty)
                this.HeaderTemplate.InstantiateIn(this);

            if (this.EmptyTemplate!=null)
                this.EmptyTemplate.InstantiateIn(this);

            if (this.FooterTemplate != null && ShowFooterOnEmpty)
                this.FooterTemplate.InstantiateIn(this);
        }
    }
}

Usage:

<UC:SmartRepeater ID="rep" runat="server" ShowHeaderOnEmpty="true" ShowFooterOnEmpty="true">
    <HeaderTemplate>HEADER</HeaderTemplate>
    <ItemTemplate>Item</ItemTemplate>
    <SeparatorTemplate>, </SeparatorTemplate>
    <EmptyTemplate><b>Nothing</b></EmptyTemplate>
    <FooterTemplate>FOOTER</FooterTemplate>
</UC:SmartRepeater>

这篇关于我怎样才能创建一个基于性能的显示页眉,页脚自定义复读?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆