2009-03-04 8 views
0

Я создаю файловый браузер в ASP.Net, но я столкнулся с проблемой, которая, по моему мнению, связана с проводкой событий на динамических элементах управления. Я объясню, что мой код делает здесь:Добавление ClickEvent в динамических LinkButtons в OnLoadComplete

Когда моя страница загружается (OnLoad), я вызываю метод (createStuff()), который создает несколько кнопок ссылок (представляющих папки в текущем каталоге), которые подключены к событию который изменяет текущий каталог на тот, который связан с кнопкой link.

Поскольку событие linkbutton-click-on запускается после вызова OnLoad (и текущий каталог поэтому изменяется после onload), кнопки ссылки не обновляются, чтобы отражать новый текущий каталог (они создаются до того, как текущий каталог измененный кликом-событием). Поэтому я также вызываю createStuff() в OnLoadComplete, что приводит к обновлению ссылочных кнопок и отображению папок в новом текущем каталоге.

HOWEVER (и это моя проблема) кажется, что проводка события (Click + = new EventHandler (changeDirectory)). Я делаю в createStuff(), действительно не работает, когда метод вызывается в OnLoadComplete (вызывается OnLoadComplete после того, как было запущено событие clickbutton-click-event). Результатом является то, что в то время как текстовое свойство кнопок ссылки отражает папки в новом каталоге, нажатие на кнопки ссылок не вызывает событие.

Как исправить эту проблему? Я пробовал переписывать события в LinkButtons в OnLoad, но тот же результат.

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

Саймон, Дания

+0

Можете ли вы указать пример кода? В частности, мне интересно, если вы указали значения ID для элементов управления, динамически созданных в createStuff(). –

+0

hi, спасибо за комментарий, вот CreateStuff() - метод: http://rafb.net/p/k0YlrU67.html Как вы можете видеть, я не указываю значения ID. – user73738

ответ

3

Установите ID свойство LinkButton в последовательно.

Причиной такого поведения являются (1) отсутствие обработчиков событий и (2) отсутствие свойств идентификатора. Поскольку вы уверены, что ваш обработчик событий подключен во время OnLoad, то недостающие свойства идентификатора являются вероятным виновником.

Когда пользователь нажимает на ваш LinkButton на клиенте, PostBack отправляется на сервер с именем LinkButton by ID. Если вы не гарантируете, что ваш элемент управления имеет одинаковый идентификатор между PostBacks, ваш обработчик событий может не подняться.

+0

Я решил проблему просто перенаправлением браузера на страницу после того, как произошло событие clickbutton (файл filesystembrowser хранится в переменной session). Но я думаю, что ваше решение (которое работает) лучше, спасибо за помощь! – user73738