Re[5]: перехватить событие динамического контрола
От: BlackKite Украина www.os-it.com
Дата: 08.02.09 22:33
Оценка:
Здравствуйте, rwety, Вы писали:

R>Здравствуйте, игппук, Вы писали:


И>>Здравствуйте, rwety, Вы писали:


R>>>у меня страница полностью не перегружается.только ее часть.->она загружается только раз.

R>>>значит если добавляеш контрол то и событие добавляется автоматом?

И>>postback событие в любом случае будет отправлено на сервер, и сервер его получит. вопрос в том, получит ли это событие обработчик на вашем динамическом контроле. для того, чтобы он его получил, контрол должен быть загружен в форму. тогда сервер сможет его обнаружить и передать ему ивент от клиента.


И>>пример кода привести сейчас не смогу, так как его нет под руками. но принцип, надеюсь, вам понятен.


R>принцип я понял. непонял каким способом его загрузить на форму.

R>пробовал form1.Controls.Add(btn), но мне нужно его разместить на Panel, если его добавить в Panel controls, то это уже будет не то.
R>кароче говоря, у меня пока не выходит.
R>как его загрузить на форму

При использовании postback в независимости от того AJAX приложение или нет, на стороне сервера обработка запроса проходит абсолютно все стадии. Динамический контрол нужно создавать всегда в Page_Init или Page_Load иначе обработчик события не будет вызван. Обычно для динамических контролов существует контрол PlaceHolder, который является своеобразным контейнером, который можно поместить внутри панели, например. Добавляется контрол в PlaceHolder примерно так:
   placeHolderInstance.Controls.Add(button);


Для динамических контролов нужно следить, чтобы UniqueID контола, который инициировал постбэк был такой же, как и у контрола, который вы создаете в начале обработки запроса. Иначе обработчик просто не вызовется.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.