Добавление списка пользовательских элементов управления с кнопками в PlaceHolder - нет события?

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

Я могу добавить элемент управления с помощью LoadControl(путь к .ascx) — без проблем.

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

Но при добавлении LinkButtons у меня возникают проблемы/проблемы.

Когда я нажимаю кнопку, я получаю «отправить» страницу, отображающую элементы управления; но собственное событие кнопки элемента управления, похоже, не срабатывает (или, по крайней мере, сначала срабатывает PageLoad на родительской странице?) - я не могу понять, куда идет мое событие или где искать имя/идентификатор или параметр для этого кнопка.

Почему или что я делаю неправильно здесь?

Теперь я сделал «фальшивую кнопку», используя метку с «жестко закодированным A HREF» с идентификатором в URL-адресе, но я хотел бы узнать, какое событие мне нужно поймать и где или как инициализировать кнопку, потому что я хочу иметь возможность использовать элементы управления "ASP.NET по умолчанию" для этих пользовательских элементов управления (надеюсь, без слишком большого количества лоскутного кодирования)...


person BerggreenDK    schedule 21.05.2009    source источник
comment
Опубликуйте код программной части, который генерирует LinkButton и связывает его событие.   -  person ichiban    schedule 21.05.2009
comment
Спасибо за ваше время, я пытался воспроизвести проблему на тестовом сайте, и теперь все работает как положено?!!??! Я считаю, что это как-то связано с довольно сложной функциональностью AJAX, которую я запускаю на той же странице. Потому что без всего этого код работает отлично. Как мне поступить? мне удалить этот вопрос или закрыть его или что?   -  person BerggreenDK    schedule 21.05.2009
comment
Если вы все еще сталкиваетесь с проблемой, перефразируйте/пометьте вопрос и укажите источник.   -  person Aaron Daniels    schedule 21.05.2009


Ответы (1)


Единственная причина, по которой события "теряются", заключается в том, что ваши элементы управления не воссоздаются таким образом, чтобы ASP.Net мог связать событие с элементом управления после обратной передачи. Это делается с помощью свойства ID.

Другими словами, вы делаете одну из трех вещей неправильно:

1) Вы по-разному назначаете идентификаторы своих кнопок ссылок на этапе создания в Init после обратной передачи.

2) Вы создаете свои кнопки ссылок динамически, используя код, но вы делаете это после фазы Init жизненного цикла страницы, так что ваши элементы управления не участвуют в ViewState.

3) Вы повторно привязываете источник данных родительского элемента управления, содержащий кнопки ссылок, при каждой обратной передаче. Используйте if (!IsPostBack), чтобы предотвратить повторную привязку каждый раз.

К сожалению, не видя вашего кода, я не могу дать ничего более конкретного.

person womp    schedule 21.05.2009
comment
Элементы управления идеально (визуально) построены на PageLoad в первый раз. Чего я и добиваюсь. Но у пользовательского элемента управления есть кнопки, и именно эти события мне нужно захватить при нажатии. ... но мой комментарий выше говорит сам за себя. Спасибо за ваше время и извините. - person BerggreenDK; 21.05.2009
comment
Извините за долгую задержку, но проект закрыли. Хотя я исследовал. Похоже, что AJAX.NET в сочетании с мастер-страницами сделали свое дело. - person BerggreenDK; 10.06.2009