2012-01-18 4 views
0

Я использую RadScheduler для моего проекта. В планировщике мне нужно периодическое обновление, поэтому в моем javascript я устанавливаю интервал для метода, который вызывает rebind() в RadScheduler каждые 60 секунд. Проблема в том, что когда мой пользователь открывает расширенную форму, метод rebind() заставляет форму исчезать. Как я могу обнаружить событие открытия и закрытия AdvancedForm, чтобы я мог остановить/перезапустить таймер?Интервал обновления RadScheduler

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

ответ

0

Пока есть событие, когда RadScheduler открывает форму «Редактировать», которая называется OnClientFormCreated, нет, когда форма редактирования закрывается. Однако есть способы сделать это, но у вас есть дополнительный код.

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

Помня об этом, мы можем взглянуть на this demo, в котором показана расширенная форма редактирования в действии, а также есть JavaScript, предварительно написанный для нас.

В функции schedulerFormCreated() мы можем сделать следующее:

 function schedulerFormCreated(scheduler, eventArgs) { 
      // Create a client-side object only for the advanced templates 
      var mode = eventArgs.get_mode(); 
      if (mode == Telerik.Web.UI.SchedulerFormMode.AdvancedInsert || 
       mode == Telerik.Web.UI.SchedulerFormMode.AdvancedEdit) { 
       // Initialize the client-side object for the advanced form 
       var formElement = eventArgs.get_formElement(); 

       var cancelButton = $("[id$='_CancelButton']"); 
       cancelButton.on("click", formClosed); 

       var templateKey = scheduler.get_id() + "_" + mode; 
       .... 

И тогда мы имеем formClosed событие:

function formClosed(eventArgs) { 
} 

в formClosed вы можете просто создать свою логику для возобновления таймера, в то время как в schedulerFormCreated вы можете напрямую вызвать функцию, которая останавливает таймер сразу после этого if-statement.

В случае, если вам интересно, что мы здесь делаем, мы просто захватываем экземпляр объекта jQuery, представляющего элемент с id, который заканчивается _CancelButton (нас не интересует начальная часть), а затем просто привязка к событию клика с использованием функции jQuery .on().

Чтобы получить экземпляр кнопки сохранения вы просто должны использовать _UpdateButton, и для близкой иконы это _AdvancedEditCloseButton. Имейте в виду, что будет выбран любой элемент, который заканчивается этими подстроками, поэтому, если вы хотите быть более конкретным, я рекомендую проверить элементы вашей расширенной формы с помощью FireBug или инструментов Chrome Dev, чтобы получить их идентификатор и подключить его к селектор выше.

Это должно позволить вам получить функциональность, которую вы ищете.