苏飞论坛

标题: asp.net中Repeater,Gridview,datalist中没有数据时怎么提示解决方案 [打印本页]

作者: 站长苏飞    时间: 2013-9-5 09:55
标题: asp.net中Repeater,Gridview,datalist中没有数据时怎么提示解决方案
    asp.net中Repeater,Gridview,datalist中没有数据时怎么提示解决方案
   
   这个问题我相信很多人都有见过,也碰到过这样的问题。
在Repeater,Gridview,datalist中没有数据时要给用户一个友好的提示,而不是直接显示空白。
我今天也碰到了这样的问题。
我来说一下我的解决方案吧。

上网查了查,大多数人在说重写一个控件,然后再使用加个EmptyDataTemplate模板,其实这种方法也是可以的,只是我个人不推荐,因为这种技术显得有点高级一些,不太适合推广。
最重要是要修改系统控件,所以我不推荐。

不过实现方法还是给大家写一下吧。

[code=csharp]/// <summary>
    /// 自定义Repeater 支持EmptyDataTemplate
    /// 作者:cantops
    /// </summary>
    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);
                }
            }
        }

    }[/code]
然后在使用是就可以添加EmptyDataTemplate模板了,直接在里面写你的提示信息就行,没有数据时会直接显示
代码如下
[code=html]<asp:Repeater ID="Repeater1" runat="server">
    <HeaderTemplate>
      //头部
    </HeaderTemplate>
    <ItemTemplate>
       //列表项
    </ItemTemplate>
    <EmptyDataTemplate>
        数据为空,给大家个提示,查不到数据哦</EmptyDataTemplate>
</asp:Repeater>[/code]
而我建议大家在这个控件下面直接验证进行提示如下
[code=html]<%
    string sm = "";
    if (Repeater1.Items.Count == 0)
    {
        sm = "<br/><br/><span style='color:red'>没有查询到相关记录!</span>";
    } %>
<%=sm %>[/code]

对就是这种方法,推荐


[groupid=74]sufeinet总群[/groupid]
作者: song    时间: 2013-9-5 09:58
其实不用这么麻烦, Gridview有一个属性:EmptyDataText="没有相关数据"   当绑定Gridview为空的时候自动会提示
作者: song    时间: 2013-9-5 09:59
甚至DIV也可以使用
作者: xjwebs    时间: 2013-9-5 10:00
第一种方法走了弯路但也实现了:脱了裤子放屁。
第二种方法直接实现了:直接放屁更爽。

经验收藏了,顶飞哥
作者: 站长苏飞    时间: 2013-9-5 10:01
song 发表于 2013-9-5 09:58
其实不用这么麻烦, Gridview有一个属性:EmptyDataText="没有相关数据"   当绑定Gridview为空的时候自动会 ...

呵呵,是的,不过Repeater并没有,





欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4