Добавление списка пользовательских элементов управления с кнопками в заполнитель - нет события?
-
23-08-2019 - |
Вопрос
Я хочу использовать "сложные" пользовательские элементы управления с более чем одним элементом управления внутри.Это тот же самый элемент управления, который я буду повторно использовать в списке, и у меня уже есть элемент управления-заполнитель для него.
Я могу добавить элемент управления с помощью LoadControl(путь к файлу .ascx) - нет проблем.
Я также могу через свои пользовательские свойства получить / установить доступ к встроенным меткам, так что я могу идеально инициализировать каждый элемент управления.
Но при добавлении LinkButtons у меня возникают проблемы.
Когда я нажимаю на кнопку, я получаю "отправить" страницу, отображающую элементы управления;но собственное событие кнопки элемента управления, похоже, не срабатывает (или, по крайней мере, загрузка страницы на родительской странице, похоже, срабатывает первой?) - я не могу понять, куда идет мое событие или где искать имя / идентификатор или параметр для этой кнопки.
Как так получилось или что я здесь делаю не так?
Теперь я создал "поддельную кнопку", используя метку с "жестко закодированным A HREF" с идентификатором в URL, но я хотел бы узнать, какое событие мне нужно перехватить и где или как инициализировать кнопку, потому что я хочу иметь возможность использовать "default ASP.NET "элементы управления для этих пользовательских элементов управления (надеюсь, без слишком большого количества лоскутного кодирования)...
Решение
Единственная причина, по которой события "теряются", заключается в том, что ваши элементы управления не воссоздаются таким образом, чтобы ASP.Net можно было связать событие с элементом управления после обратной передачи.Он делает это с помощью свойства ID.
Другими словами, вы делаете одну из трех неправильных вещей:
1) Вы по-разному присваиваете идентификаторы своим linkbuttons на этапе создания в Init после обратной отправки
2) Вы создаете свои linkbuttons динамически, используя код, но вы делаете это после этапа инициализации жизненного цикла страницы, так что ваши элементы управления не участвуют в ViewState.
3) Вы повторно привязываете источник данных родительского элемента управления, содержащего linkbuttons, при каждой обратной передаче.Использование if (!IsPostBack)
чтобы предотвратить повторную привязку его каждый раз.
К сожалению, не видя вашего кода, я не могу дать ничего более конкретного, чем это.