Как получить дескриптор динамической кнопки изображения в обратной передаче панели ajax

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

ImageButton imgbtnRemove = new ImageButton();
imgbtnRemove.ID = "uxStandardLetterDeleteImage_" + items.letterName;
imgbtnRemove.CommandName = "uxStandardLetterDeleteImage_" + items.letterName;
imgbtnRemove.ImageUrl = items.remove;
imgStatus.AlternateText = "Remove";
tRow.Cells[3].Controls.Add(imgbtnRemove);

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

string returnData = Request.Form.ToString();

но повторение через форму управляет изображениями:

if (c is System.Web.UI.WebControls.Button ||
c is System.Web.UI.WebControls.ImageButton)

не находит. Я могу найти его, если вручную введу:

imgbtnRemove.Click += new System.Web.UI.ImageClickEventHandler(this.ButtonClick);

в Page_Load, а затем захватите его в событии клика:

switch (((System.Web.UI.WebControls.ImageButton)sender).CommandName)
...

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

Заранее спасибо...


person 32U    schedule 14.05.2009    source источник


Ответы (1)


Если вы создаете динамические элементы управления на этапе обработки событий жизненного цикла страницы (например, в событии выбора элемента), то элемент управления исчезнет при следующей обратной передаче.

Чтобы динамические элементы управления были зарегистрированы в ViewState, их необходимо создать на этапе Init жизненного цикла события.

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

person womp    schedule 14.05.2009
comment
Перемещение воссоздания таблицы в OnInit позволило мне найти элемент управления в моем (рекурсивном) методе управления, но я потерял новую строку, добавленную после загрузки панели ... но я думаю, что смогу это решить. Спасибо! - person 32U; 15.05.2009