У меня есть пользовательский элемент управления на странице aspx, который содержит поля фильтра и возвращает WhereClause. Пользовательский консоль поднимет событие под названием FilterApplied, когда нажата кнопка «Поиск».Запуск загрузки страницы несколько раз
На моей главной форме я добавить элемент управления с:
<uc1:Filter runat="server" ID="Filter" /> <br />
В моем коде позади меня:
protected void Page_Load(object sender, EventArgs e)
{
//Register event when filter is changed.
this.Filter.FilterApplied += new EventHandler(this.FilterApplied);
if (Page.IsPostBack)
{ //Do some things that take long
}
}
protected void FilterApplied(object sender, EventArgs e)
{
//Reload the page to refresh the graphs.
Page_Load(sender, e);
}
Проблема: Когда я нажимаю Поиск по моему пользовательский элемент управления, Form_Load выполняется дважды. Один раз, потому что он перезагружен, а затем еще раз, потому что я вызываю его из FilterApplied. Если я не назову его из FilterApplied, то whereclause все равно пуст.
Как я могу гарантировать, что Page_Load запускается только один раз при нажатии на Поиск?
Тогда не называют 'Page_Load' из вашего' метода FilterApplied'. –
Не работает. «Если я не назову его из FilterApplied, то whereclause все равно пуст». –
Почему вопрос непонятен или не полезен (или показать отсутствие исследований? Если неясно, могу ли я попробовать и исправить его. –