2009-06-02 3 views

ответ

11

Обычно вы должны связываться с нагрузкой или после нее(). Событие Init() предназначено для создания любых динамически созданных элементов управления до появления привязки, чтобы они существовали, когда необходимо иметь привязку. Load() не является единственным вариантом, однако ... если вам нужно отложить привязку к элементу управления по какой-либо причине, вы также можете привязать его к событию PreRender(). Также можно выполнить дальнейшую настройку в Load(), вызвать метод DataBind() и обработать события привязки страниц для связывания еще более структурированным способом, если вам нужно.

+0

+1 для упоминания 'PreRender' (я забыл упомянуть об этом), потому что он рекурсивно вызывает' EnsureChildControls' для всех детей. – Cerebrus

+1

Любое руководство, хотя на лучшей практике? С таким количеством событий на выбор изначально кажется, что нет четкого лучшего выбора. В частности, PreRender против управления обработчиком событий DataBinding. Арг, слава богу за MVC –

+1

Ditto @ MVC. : D Что касается наилучшей практики ... начните с Load() и уточните по мере необходимости. Загрузка(), как правило, является лучшим местом для начала, если вы не знаете, что вам нужно связать позже или иметь конкретную причину для запуска общей страницы DataBind. В большинстве случаев, если вам нужно связать в PreRender, из-за проблемы с исполнением и упорядочением, которая часто возникает, когда все, связанное с элементом управления, зависит от какого-то другого процесса, заканчивающегося в первую очередь. – jrista

3

Это будет зависеть от конкретного случая, однако наиболее распространенным ответом будет Page_Load, поскольку этого обычно достаточно для большинства сценариев привязки данных.

Даже для сложных сценариев Databinding, Page_Init бы не быть подходящим местом, потому что элементы управления контейнеров, как GridView загрузки своих детей только во время Page_Load мероприятия. Вам нужно идти дальше по жизненному циклу, чтобы получить доступ к этим детям.

В моем случае, однако, ответ был бы «ни». Это связано с тем, что я никогда не привязываю управление напрямую в пределах Page_Load. Вместо этого я предпочитаю иметь отдельный метод, который выполняет привязку данных и может быть вызван из Page_Load или любой другой функции, если мне нужно повторно связать после обратной передачи.

Смежные вопросы