六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 158|回复: 0

重写Repeater,使其支持空模版(列表为空时显示)

[复制链接]

升级  78.67%

52

主题

52

主题

52

主题

秀才

Rank: 2

积分
168
 楼主| 发表于 2013-1-1 21:59:35 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">在WebForm项目中,列表显示我比较喜欢用Repeater,生成的代码比较干净。不过有一个问题就是当列表为空的时候,为了有较好的用户体验,我们喜欢在界面给出一行提示“查询结果为空”。这时候,.NET自带的Repeater就不能满足需求了,以前通常都是查询出来以后判断一下列表项,一般是datatable或list,如果条数为0,就给出提示,每个列表进行判断,重复代码太多。所以,这里我们想到重写一下Repeater,使其支持一个"空模板",直接代码:

<div class="cnblogs_code">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);
                }
            }
        }
    }
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表