Интервал обновления RadScheduler - PullRequest
0 голосов
/ 18 января 2012

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

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

1 Ответ

0 голосов
/ 20 января 2012

Хотя есть событие, когда 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 (нас не интересует начальная часть), а затем просто привязка к событию click с использованием функции .on () jQuery.

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

Это должно позволить вам получить необходимую функциональность.

...