- 积分
- 40165
- 好友
- 记录
- 主题
- 帖子
- 听众
- 收听
|
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]
对就是这种方法,推荐
|
|