RadScheduler更新间隔

时间:2012-01-18 16:14:12

标签: javascript asp.net telerik setinterval radscheduler

我正在为我的项目使用RadScheduler。在调度程序中,我需要定期更新,所以在我的javascript中,我为RadScheduler上每隔60秒调用rebind()的方法设置间隔。问题是,当我的用户打开高级表单时,rebind()方法使表单消失。如何检测AdvancedForm打开和关闭事件,以便我可以停止/重新启动计时器?

提前谢谢。

1 个答案:

答案 0 :(得分: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语句之后立即停止计时器的函数。

如果您想知道我们在这里做了什么,我们只是抓住一个jQuery对象的实例,该对象代表一个id以_CancelButton结尾的元素(我们对开头部分不感兴趣)然后只是使用.on() jQuery函数绑定到click事件。

要获取保存按钮的实例,您只需使用 _UpdateButton ,对于关闭图标,它是 _AdvancedEditCloseButton 。请记住,选择以这些子字符串结尾的任何元素,因此如果您想要更具体,我建议您使用FireBug或Chrome开发工具检查高级表单的元素以获取其ID并将其插入上面的选择器。

这应该可以让您获得所需的功能。