Интервал обновления RadScheduler

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

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

1 ответ

Хотя есть событие, когда RadScheduler открывает свою форму редактирования, которая называется OnClientFormCreated, не существует события, когда форма редактирования закрывается. Хотя есть способы сделать это, но вы должны добавить дополнительный код.

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

Имея это в виду, мы можем взглянуть на эту демонстрацию, которая показывает расширенную форму редактирования в действии, а также имеет некоторый предварительно написанный 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.

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

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

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

Другие вопросы по тегам