【发布时间】:2012-03-07 17:13:50
【问题描述】:
我在带有搜索按钮的页面上有一个 GridView。 GridView 一开始是不可见的,因此用户必须在检索结果之前单击搜索。 DataSourceID 设置为 ObjectDataSource 的 ID。调用 click 时,会从 click 处理程序中调用以下方法:
private void PopulateGrid()
{
gv.Visible = true;
gv.DataBind();
}
从 Page_Load 处理程序调用相同的方法时会出现问题。我们将用户的搜索词存储在他们的会话中,并在第一次访问页面时检索它们,如下所示:
if(!PostBack && Session["search"] != null)
{
SetSearchFromSession();
PopulateGrid();
}
这种情况下的问题是 ObjectDataSource 的 Selecting 事件被触发了两次。当 GridView 变为可见时,一次,当调用 DataBind() 时再次。我通过替换 gv.Visible = true 解决了这个问题;用于 Page_Load 中的 PopulateGrid();。
但我想了解发生了什么。为什么在按钮单击事件中的调用不设置时,从页面加载中显示 GridView 会导致 DataBinding?
【问题讨论】:
标签: asp.net data-binding gridview objectdatasource