Как упоминает Wiktor, многие элементы управления в ASP.Net уже созданы для того, чтобы вы могли их использовать определенным образом;нажатие кнопки, изменение текста, изменение выбранного индекса - эти элементы управления были созданы для выполнения определенных задач, , поэтому они работают так, как работают .
Из документации:
Поскольку для большинства событий управления сервером ASP.NET требуется обратная передача на сервер для обработки, они могут повлиять на производительность страницы.Поэтому серверные элементы управления предлагают ограниченный набор событий, как правило, только события типа щелчка.Некоторые серверные элементы управления поддерживают события изменений.Например, элемент управления веб-сервера CheckBox вызывает событие CheckedChanged в коде сервера, когда пользователь щелкает поле.Некоторые серверные элементы управления поддерживают более абстрактные события.Например, серверный веб-элемент управления Calendar вызывает событие SelectionChanged, которое является более абстрактной версией события щелчка.
Конечно, вы можете написать свои собственные клиентские элементы управления, но это требует многобольше работы.В статье Обработка событий сервера в ASP.Net обсуждается это.Подводя итог, можно сказать, что важным разделом является реализация RaisePostBackEvent
Если вы хотите предоставить несколько событий, вы изменяете аргумент события, отправляемый этому методу с клиента, и вызываете соответствующий сервер.параллельное событие.Это может быть так же просто, как утверждение if.Базовым примером может быть наличие двух событий javascript на стороне клиента, каждое из которых может вызвать:
__doPostBack(controlId, 'superclick');
__doPostBack(pageId, 'superchange');
А затем, в вашем обработчике событий обратной передачи, вызвать требуемое событие на стороне сервера на основе переданного аргумента.Простой обработчик на стороне сервера RaisePostBackEvent будет выглядеть примерно так:
public void RaisePostBackEvent(string eventArgument){
if(eventArgument == "superclick")
{
OnSuperClick(this, new EventArgs());
}
if(eventArgument == "superchange")
{
OnSuperChange(this, new EventArgs());
}
}