Пользовательский серверный элемент управления asp.net — как узнать, произошла ли обратная передача из-за этого элемента управления

У меня есть собственный элемент управления сервером asp.net (фактически специализированная версия флажка). Я хочу выполнить некоторую обработку обратной передачи, но только в том случае, если обратная передача была результатом щелчка этого элемента управления (с параметром autopostback, установленным на true). Каков наилучший способ определить, является ли обратная передача результатом этого элемента управления или чего-то еще?

Спасибо за вашу помощь.


person Paul Hyman    schedule 24.07.2009    source источник
comment
Не могли бы вы просто создать обработчик кликов для своего пользовательского объекта? Он будет вызван автоматически после публикации страницы.   -  person Cᴏʀʏ    schedule 24.07.2009
comment
Я не верю, что пользовательские серверные элементы управления получают событие щелчка. По крайней мере, я не смог найти ничего подобного. Я думаю, что события щелчка генерируются элементами управления кнопками, когда они определяют, что они были элементом управления, вызвавшим обратную передачу. Конечно, я могу что-то упустить здесь ..   -  person Paul Hyman    schedule 24.07.2009


Ответы (2)


Возможно, вы сможете заставить это работать:

Создайте логику, которая сообщает вам, какой элемент управления отправил обратно:

http://www.eggheadcafe.com/articles/20050609.asp

Комментарий Кори Ларсона тоже хороший... :)

person BigBlondeViking    schedule 24.07.2009

Похоже, вы могли бы использовать всплывающие события . По сути, вы просто выставляете событие onchange в своем флажке (если ваш серверный элемент управления является составным элементом управления) из вашего пользовательского серверного элемента управления. Затем напишите свой специальный код обработки в обработчике событий на странице, на которой размещается элемент управления.

person HectorMac    schedule 24.07.2009
comment
Мой элемент управления — это просто класс, производный от Checkbox. Я не могу найти событие onchange.. - person Paul Hyman; 24.07.2009
comment
Если это asp:CheckBox, то событие вызывается OnCheckedChanged(). После того, как вы внедрили код для всплывающего сообщения о событии, вы должны вызвать обработчик события RaiseBubbleEvent() OnCheckChanged(). - person HectorMac; 24.07.2009
comment
Спасибо, что нашли время ответить. На самом деле причина, по которой я это делаю, заключается в том, что событие CheckChanged не всегда вызывается, когда мне это нужно. Если элемент управления считает, что состояние проверки не изменилось с момента последней обратной передачи, то события нет. Но если какой-то код javascript изменил состояние флажка, не вызывая обратной передачи, а затем пользователь снова щелкнул в поле, код сервера не будет знать, что состояние фактически изменилось (через javascript), а затем изменилось обратно, когда пользователь щелкнул в поле. коробка. Он просто увидит, что состояние такое же, как и при последней обратной передаче, и не вызовет событие. - person Paul Hyman; 24.07.2009