我正在为我的项目使用RadScheduler。在调度程序中,我需要定期更新,所以在我的javascript中,我为RadScheduler上每隔60秒调用rebind()的方法设置间隔。问题是,当我的用户打开高级表单时,rebind()方法使表单消失。如何检测AdvancedForm打开和关闭事件,以便我可以停止/重新启动计时器?
提前谢谢。
答案 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并将其插入上面的选择器。
这应该可以让您获得所需的功能。