2012-02-07 2 views
1

У меня есть два элемента управления в UpdatePanel; флажок и таймер.Как поднять событие без полной обратной передачи?

Когда я нажимаю флажок (событие CheckedChanged), он должен сделать редактируемый timepicker (ReadOnly = false) и наоборот. Я хочу, чтобы событие CheckedChanged было поднято без полной обратной передачи.

Есть ли обходной путь, не делая это в javascript? Я не знаю, как управляются триггеры в UpdatePanel.

Спасибо!

(asp.net 4.0, C#)

+1

Значит, вы не хотите обрабатывать сервер событий, и вы также не хотите обрабатывать его с помощью Javascript? Хм, я не уверен, что есть другие альтернативы, чем это. Если я не понял ваш вопрос. –

+0

Я хочу обработать сервер событий. Я просто не хочу делать полную обратную передачу – Soader03

ответ

2

К сожалению, с помощью UpdatePanel вызывает полную обратную передачу. Поэтому, если вы этого не хотите, вам придется использовать клиентский JavaScript.

Это не очень сложно. Найдите того, кто может написать JavaScript для вас, это не ракетостроение.

+0

Я вижу ... Спасибо – Soader03

0

Вы можете добавить код в свои OnInit и OnLoad, чтобы пропустить выполнение кода, который они содержат, путем проверки на Request.IsPostback и если какой-то конкретный элемент управления вызвал его (обратная передача); например:

<asp:CheckBox runat="server" ID="MyCheckbox" AutoPostBack="true" /> 


if(this.Request.IsPostback && this.Request.Form["__EVENTTARGET"] == this.MyCheckbox.ID) 
{ 
    return; 
} 

Потому что я не проверить это, если ваш флажок вложенные в других элементах управления, которые привели бы к его ClientID и UniqueID быть значением ID предваряются родительской Controls', а затем проверить эти 2 свойство выше. Кроме того, вы можете изменить это условие на явно противоположное, чтобы вы могли обернуть полный код тела в этом блоке IF (если это то, что вы предпочитаете, или если вам не нравятся несколько операторов возврата в одном методе).

Надеюсь, я хорошо понял - это сэкономит некоторую обработку; однако он может иметь отрицательные побочные эффекты (например, если у вас есть код, который динамически добавляет элементы управления в дерево управления, в методах init/load на сервере, то вы хотите, чтобы они выполнялись всегда, даже в этом случае, в противном случае viewstate из этих элементов управления dyn станет недействительным).

Смежные вопросы