У меня есть GridView на странице с кнопкой поиска.GridView не виден для начала, поэтому пользователь должен щелкнуть поиск, прежде чем будут получены результаты.DataSourceID устанавливается в качестве идентификатора ObjectDataSource.Когда вызывается click, из обработчика щелчка вызывается следующий метод:
private void PopulateGrid()
{
gv.Visible = true;
gv.DataBind();
}
Проблема возникает, когда тот же метод вызывается из обработчика Page_Load.Мы сохраняем поисковые термины пользователя в их сеансе и извлекаем их при первом обращении к странице, что-то вроде этого:
if(!PostBack && Session["search"] != null)
{
SetSearchFromSession();
PopulateGrid();
}
Проблема в этом случае состоит в том, что событие Selecting объекта ObjectDataSource запускается дважды.Один раз, когда GridView сделан Visible, и снова, когда вызывается DataBind ().Я исправил это, подставив gv.Visible = true
;для PopulateGrid();
в Page_Load.
Но я бы хотел понять, что происходит.Почему настройка GridView, видимая из загрузки страницы, приводит к привязке данных, а вызов в событии нажатия кнопки - нет?