У меня есть ситуация, когда я хочу использовать несколько элементов управления на стороне сервера, которые имеют состояние на стороне клиента. Я хочу проверить состояние, когда происходят события (например, различные щелчки), и когда состояние находится там, где я хочу, я хочу отправить обратно на сервер и выполнить некоторую обработку.
В частности, мне нужно убедиться, что по крайней мере 3 различных элемента управления имеют выбор, прежде чем я хочу сделать обратную передачу. Поскольку нет конкретного элемента управления, который будет инициировать обратную передачу, я просто хочу захватить события выбора на стороне клиента, а затем вызвать __doPostBack () (или что-то подобное), чтобы инициировать обработку. Поэтому я отключил все события на стороне сервера, отключил автостопбэк и подключил некоторый javascript для обработки этого.
У меня есть весь код на стороне клиента, написанный и работающий, однако я не могу заставить сервер распознать обратную передачу. Я переопределяю RaisePostBackEvent и проверяю eventArgument для своего пользовательского аргумента. Это не работает, так как RaisePostBackEvent никогда не вызывается.
Этот метод работал, когда у меня была включена автостопбэк (например, событие на стороне сервера Telerik Radgrid OnSelectChanged).
Есть предложения о том, как лучше всего с этим справиться?
Обновление:
Когда запрашивается пример кода, он точно такой же, как я сказал выше. Не ракетостроение.
Javascript:
function CheckState(source, eventArgs) {
// logic to test state of controls
__doPostBack("", "DoMyWork:");
}
Тогда в коде позади:
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
if (eventArgument.IndexOf("DoMyWork") != -1)
{
// do my server side work.
}
}
Решение:
Потому что это несколько сбивает с толку .. Я просто скажу, каким было мое решение.
Я использовал один из элементов управления, участвующих в обратной передаче, и использовал его UniqueID для параметра элемента управления, затем мой метод в качестве события.