我刚刚使用Microsoft's walkthrough here创建了一个基本的ASP.NET网站。它有一个页面,其中包含一些表单,该表单接受一些文本输入,基于该表单运行数据库查询,并以GridView
结果生成结果。我将EmptyDataText
属性添加到我的GridView
,以便在用户的搜索未返回任何结果时向用户明确显示。
这一切都按预期工作,但有一个例外:
IIS显示我的EmptyDataText
“未找到结果”。 之前提交搜索表单。
这违背了我使用EmptyDataText
背后的目的,即向用户表明网页已成功提交搜索但未找到任何结果,而不是将搜索结果投入以太网。
例如,搜索无法找到的内容的用户将看到“未找到结果”。在他们搜索之前和之后,而不是之前没有任何事情和“没有找到结果”。后。前一种行为给人的印象是搜索不起作用。
如何在提交搜索表单后,将GridView
配置为仅显示EmptyDataText
?
答案 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";
}