在WebForm項目中,列表顯示我比較喜歡用Repeater,生成的代碼比較乾淨。不過有一個問題就是當列表爲空的時候,爲了有較好的用戶體驗,我們喜歡在界面給出一行提示“查詢結果爲空”。這時候,.NET自帶的Repeater就不能滿足需求了,以前通常都是查詢出來以後判斷一下列表項,一般是datatable或list,如果條數爲0,就給出提示,每個列表進行判斷,重複代碼太多。所以,這裏我們想到重寫一下Repeater,使其支持一個"空模板",直接代碼:
{
public class Repeater : System.Web.UI.WebControls.Repeater
{
private ITemplate emptyDataTemplate;
[PersistenceMode(PersistenceMode.InnerProperty), TemplateContainer(typeof(TemplateControl))]
public ITemplate EmptyDataTemplate
{
get { return emptyDataTemplate; }
set { emptyDataTemplate = value; }
}
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
if (emptyDataTemplate != null)
{
if (this.Items.Count == 0)
{
EmptyDataTemplate.InstantiateIn(this);
}
}
}
}
}
界面上調用,首先添加:
然後調用我們重寫過的 Repeater
<ItemTemplate>
數據綁定
</ItemTemplate>
<EmptyDataTemplate>
查詢結果爲空
</EmptyDataTemplate>
</Szfs:Repeater>