0

我刚刚使用Microsoft 在此处的演练创建了一个基本的 ASP.NET 网站。它有一个带有表单的页面,该表单接受一些文本输入,基于该表单运行数据库查询,并将结果生成为GridView. 我将EmptyDataText属性添加到 myGridView以在用户的​​搜索未返回任何结果时显式显示用户。

这一切都按预期工作,但有一个例外:

IIS 显示EmptyDataText“未找到结果”。甚至提交搜索表单之前。

这违背了我使用 的目的EmptyDataText,即向用户表明网页成功提交了他们的搜索但没有找到结果,而不是把他们的搜索扔到以太中。

例如,搜索无法找到的内容的用户将看到“未找到结果”。在搜索之前和之后,而不是之前没有任何结果和“未找到结果”。后。前一种行为给人的印象是搜索不起作用。

如何将我的配置GridViewEmptyDataText提交搜索表单后显示?

4

4 回答 4

2

您正在使用将在加载页面时自动绑定的sqldatasource 。单击搜索按钮时以编程方式绑定gridview

于 2012-06-06T05:09:26.010 回答
1

在用户启动搜索之前不要绑定您的 GridView。当您将 GridView 与具有 0 条记录的数据源绑定时,EmptyDataText将显示 。

您可能会将其绑定在 Page_Load 上。

编辑

无论在代码中执行 DataBind() 的任何位置(动作处理程序除外),都将其删除。您的 DataBind() 应该只发生在接收用户操作的处理程序中。

如果 Visual Studio 正在使用自动绑定在幕后做一些巫术,您始终可以将网格默认为不可见。在用户启动搜索时使其可见。

于 2012-06-05T23:52:53.570 回答
0

只是不要在搜索之前对其进行数据绑定,直到那时它实际上是完全不可见的。

更新:也许您正在使用 DataSourceID (自动绑定数据)?

更新 2:首先,出于什么原因投反对票(至少有礼貌地发表评论)?如果不是我,OP 仍然不知道问题出在哪里 - 其次,只需DataSourceID从声明中删除该属性,并在用户进行搜索时将其从代码隐藏中设置回来(您可能想要调用该GridView DataBind()方法之后手动,但前提是它自己不这样做 - 不先尝试)。

于 2012-06-05T23:59:46.227 回答
0

正如其他答案所建议的那样,GridView由于它具有DataSourceID属性,因此在用户进行搜索之前被绑定。正如MSDN 上所解释的,此属性会导致GridView自动绑定到指定的源:

若要绑定到数据源控件,请将 GridView 控件的 DataSourceID 属性设置为数据源控件的 ID 值。GridView 控件自动绑定到指定的数据源控件,并且可以利用数据源控件的功能来执行排序、更新、删除和分页。这是绑定数据的首选方法。

为了获得我正在寻找的行为,我从 中删除了该属性GridView,而是OnClick在我的搜索表单的提交按钮中添加了一个属性。该OnClick属性是指BindGridView仅在用户提交表单时才调用的方法。

这个方法所做的就是DataSourceID用它之前作为属性的相同值填充 :

public void BindGridView(object sender, EventArgs e)
{
    GridView1.DataSourceID = "DataSourceID1";
}
于 2012-06-08T17:46:41.493 回答