Использование Page.IsPostback в пользовательском элементе управления, заключенном в панель обновления

У меня есть главная страница, на которую я загружаю пользовательский элемент управления с сеткой и кнопками добавления/редактирования ссылок.

Если я привязываю сетку, устанавливая источник данных и вызывая метод databind() в событии загрузки страницы, тогда он устанавливается правильно. Однако я хочу сохранить выбранную строку между обратными передачами, поэтому я, как обычно, заключаю код привязки в «if (!Page.IsPostBack) {}». Моя проблема в том, что загрузка страницы всегда регистрирует ее как обратную передачу, и мой код никогда не запускается.

Я использую фреймворк 2.0, а моя сетка — это Infragistics 2008.1 для фреймворка 2.0.

Я думаю, что это должно быть что-то простое... или надеюсь, во всяком случае!

заранее спасибо


person littlechris    schedule 26.04.2009    source источник
comment
Littlechris, он даже не запускается при первой загрузке сайта?   -  person The real napster    schedule 26.04.2009
comment
Нет. Я должен был упомянуть, что я динамически загружаю свой контроль. Существует несколько уровней доступа, и в зависимости от этого я загружаю пользовательские элементы управления во внутреннюю вкладку.   -  person littlechris    schedule 26.04.2009


Ответы (3)


Если вы поместите свой элемент управления в UpdatePanel, вам следует проверить Page.IsCallback вместо Page.IsPostBack.

person M4N    schedule 26.04.2009
comment
Это всегда обратная передача, так как я загружаю контроллер на страницу. Я загрузил элемент управления при загрузке главной страницы, чтобы продолжить разработку. Я мог бы просто использовать переменную сеанса, чтобы заменить функциональность ispostback... если у вас нет более приятных решений? - person littlechris; 26.04.2009

Два пути, которые я нашел вокруг этого, были:

  1. чтобы загрузить пользовательские элементы управления при первой загрузке страницы, а затем скрыть их, пока пользователь не выберет то, что ему нужно видеть.
  2. для загрузки новой страницы в iframe на главной странице, что позволяет ей иметь собственное управление страницей, что означает, что когда она загружается сначала, это не обратная передача.

Не самый большой, но проходит.

Спасибо за помощь.

person littlechris    schedule 29.04.2009

У меня смешанные чувства по поводу некроза этой старой темы, но вопрос все еще актуален, и не было предложено никаких хороших решений, поэтому я бы добавил то, что недавно сделал для решения той же проблемы:

У меня была похожая проблема с сайтом, который я создавал. Мое решение состояло в том, чтобы добавить в пользовательский элемент управления метод OnFirstLoad, который выполняет все действия, которые я бы обернул в блок if not Page.IsPostback. Затем я вызываю метод OnFirstLoad со страницы размещения при первой загрузке элемента управления в дерево элементов управления. Таким образом, самому элементу управления не нужно беспокоиться о том, является ли это обратной передачей, и главная страница может инициализировать ее по мере необходимости.

person Will Russell    schedule 19.03.2019