我怎样才能创建一个基于性能的显示页眉,页脚自定义复读? [英] How can I create a custom Repeater that displays Header, Footer based on properties?
本文介绍了我怎样才能创建一个基于性能的显示页眉,页脚自定义复读?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要创建显示基于性能的页眉/页脚,只有当数据源
是空的转发器。
公共类中继器: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屋!
查看全文