我正在为我的项目使用 RadScheduler。在调度程序中,我需要定期更新,因此在我的 javascript 中,我为每 60 秒在 RadScheduler 上调用 rebind() 的方法设置间隔。问题是,当我的用户打开高级表单时, rebind() 方法使表单消失。如何检测 AdvancedForm 打开和关闭事件以便我可以停止/重新启动计时器?
先感谢您。
我正在为我的项目使用 RadScheduler。在调度程序中,我需要定期更新,因此在我的 javascript 中,我为每 60 秒在 RadScheduler 上调用 rebind() 的方法设置间隔。问题是,当我的用户打开高级表单时, rebind() 方法使表单消失。如何检测 AdvancedForm 打开和关闭事件以便我可以停止/重新启动计时器?
先感谢您。
虽然 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 对象的实例,它代表一个 id 以 _CancelButton 结尾的元素(我们对开始部分不感兴趣),然后绑定到使用.on() jQuery 函数的单击事件。
要获得保存按钮的实例,您只需使用_UpdateButton,对于关闭图标,它是_AdvancedEditCloseButton。请记住,将以这些子字符串结尾的任何元素都将被选中,因此,如果您想更具体一些,我建议您使用 FireBug 或 Chrome 开发工具检查高级表单的元素,以获取它们的 ID 并将其插入上面的选择器.
这应该允许您获得您正在寻找的功能。