Можете ли вы форсировать рендеринг страницы после его загрузки? - PullRequest
0 голосов
/ 07 марта 2012

Проблема: я загружаю один из нескольких пользовательских элементов управления на основе выбранной вкладки в RadTabstrip Control, которая находится на родительской странице.Я захватил выбранную вкладку и назначил ее переменной Session в событии OnTabClick для использования в каждом пользовательском элементе управления, чтобы определить, нужно ли отображать этот конкретный элемент управления.

Причина этого в том, что каждый пользовательский элемент управлениязапрашивает базу данных для рендеринга различных диаграмм, и я не хочу, чтобы ненужная обработка происходила при каждом возвращении на сервер.Я хотел бы добавить, что каждый пользовательский элемент управления имеет несколько меток в своей разметке, которые получают только текстовые значения, назначенные во время выполнения на основе содержимого, полученного из базы данных.

Когда я загружаю главную страницу, выбранная вкладкапеременная проверяется каждым пользовательским элементом управления, и все отлично работает из этой области.(Первая вкладка с индексом 0 не имеет диаграмм)

Проблема заключается в том, что при выборе вкладки с пользовательским элементом управления соответствующий код для получения данных из базы данных и построения диаграммы работает нормально, но значение TEXTэлементов управления Label в разметке не отображаются на странице, хотя значения TEXT устанавливаются в Code-Behind одновременно с получением данных.

Если я выполняю Post Backэтой же страницы отображаются значения TEXT элементов управления Label.

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

Есть ли способ обойти это?Я рассчитываю, что вызов события Render после попадания в базу данных сработает, но, возможно, я не совсем уверен в своих мыслях.

Кто-нибудь может дать какой-нибудь совет или потенциальное решение ???

Спасибо

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Мне так и не удалось решить проблему позднего связывания, из-за которой текст ярлыков не появлялся до тех пор, пока я не обновил страницу вручную, поэтому я подошел к проблеме с другой стороны. Я по-прежнему сохранял логику, которая позволяла заполнять данные каждого пользовательского элемента управления только в том случае, если пользователь выбрал соответствующие вкладки, но я переместил встроенный код, встроенный в мою разметку, в мой файл Code-Behind.

Я не был уверен на 100% относительно порядка обработки разметки и выделенного кода, поэтому я исследовал и обнаружил, что все, что сделано декларативно на странице aspx, обрабатывается первым, а объекты создаются раньше. доступ или обновление в коде позади. Таким образом, с помощью этой информации я полностью разделил их и смог получить текст для отображения на этикетках без каких-либо проблем.

Мне все равно хотелось бы знать, как заставить страницу вызывать событие Render для имитации или имитации ручной обратной передачи после начальной Page_Load, но работа с потоком циклов страниц намного проще и, вероятно, вероятнее всего. более предпочтительный способ делать вещи.

0 голосов
/ 22 марта 2012

Один из способов решения вашей проблемы - рассмотреть возможность использования «Панели обновления».Это позволит вам визуализировать всю страницу, а затем по событию обновить только область панели обновлений.

Обычно я хотел бы эту функцию из соображений производительности, но здесь есть одна загвоздка.Некоторые браузеры (например, версии Safari и Opera) не отображают их правильно.Является ли ваше приложение веб-приложением, предназначенным для общего пользования потребителями?В таком случае вам может потребоваться полное обновление страницы на той же странице и передача пользовательских данных (если только Opera / другие браузеры не исправили этот недостаток - я не тестировал в течение 4 месяцев).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...