重寫Repeater,使其支持空模版(列表爲空時顯示)

在WebForm項目中,列表顯示我比較喜歡用Repeater,生成的代碼比較乾淨。不過有一個問題就是當列表爲空的時候,爲了有較好的用戶體驗,我們喜歡在界面給出一行提示“查詢結果爲空”。這時候,.NET自帶的Repeater就不能滿足需求了,以前通常都是查詢出來以後判斷一下列表項,一般是datatable或list,如果條數爲0,就給出提示,每個列表進行判斷,重複代碼太多。所以,這裏我們想到重寫一下Repeater,使其支持一個"空模板",直接代碼:

namespace szfsControl
{
    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);
                }
            }
        }
    }
}

界面上調用,首先添加:

<%@ Register TagPrefix="Szfs" Namespace="szfsControl" Assembly="Szfs.Web" %>

然後調用我們重寫過的 Repeater
         <Szfs:Repeater runat="server" ID="Repeater1">
            <ItemTemplate>
                數據綁定
            </ItemTemplate>
            <EmptyDataTemplate>
                查詢結果爲空
            </EmptyDataTemplate>
         </Szfs:Repeater>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章