如何在用户提交表单后才显示EmptyDataText?

时间:2012-06-05 23:39:43

标签: c# asp.net gridview asp.net-4.0

我刚刚使用Microsoft's walkthrough here创建了一个基本的ASP.NET网站。它有一个页面,其中包含一些表单,该表单接受一些文本输入,基于该表单运行数据库查询,并以GridView结果生成结果。我将EmptyDataText属性添加到我的GridView,以便在用户的搜索未返回任何结果时向用户明确显示。

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

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

这违背了我使用EmptyDataText背后的目的,即向用户表明网页已成功提交搜索但未找到任何结果,而不是将搜索结果投入以太网。

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

如何在提交搜索表单后,将GridView配置为仅显示EmptyDataText

4 个答案:

答案 0 :(得分:2)

您正在使用 sqldatasource ,它会在加载页面时自动绑定。单击搜索按钮

以编程方式绑定gridview

答案 1 :(得分:1)

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

您可能会在Page_Load上绑定它。

修改

在代码中执行DataBind()的任何地方(动作处理程序除外)都将其删除。您的DataBind()只应出现在接收用户操作的处理程序中。

如果Visual Studio在幕后使用自动绑定执行某些伏都教,您始终可以将网格默认为不可见。在用户启动搜索时使其可见。

答案 2 :(得分:0)

搜索之前,不要将其数据绑定,直到那时它才会被完全隐藏。

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

更新2:首先,因为什么原因是downvote(至少有礼貌留下评论)?如果它不适合我,OP仍然不知道问题所在 - 其次,只需从声明中删除DataSourceID属性,并在用户进行搜索时将其从代码隐藏中重新设置(您可能想要在此之后手动调用GridView DataBind()方法,但前提是它本身不能这样做 - 先试试吧。

答案 3 :(得分:0)

正如其他答案所示,GridView在用户进行搜索之前受到约束,因为它具有DataSourceID属性。正如on MSDN所解释的,此属性会导致GridView自动绑定到指定的源:

  

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

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

所有这个方法都使用与以前相同的值作为属性填充DataSourceID

public void BindGridView(object sender, EventArgs e)
{
    GridView1.DataSourceID = "DataSourceID1";
}