我创建了一个绑定到远程数据源的 Kendo Scheduler。远程数据源实际上是两个独立数据源的组合。这部分工作正常。
问题是......有什么办法可以防止某些事件被破坏?
我已经通过检查事件属性中的某个字段并调用 , 和事件(如果它应该是只读的)来停止其他e.preventDefault()
形式的编辑edit
。这工作正常,但我不能阻止删除。moveStart
resizeStart
任何建议都非常感谢。
我创建了一个绑定到远程数据源的 Kendo Scheduler。远程数据源实际上是两个独立数据源的组合。这部分工作正常。
问题是......有什么办法可以防止某些事件被破坏?
我已经通过检查事件属性中的某个字段并调用 , 和事件(如果它应该是只读的)来停止其他e.preventDefault()
形式的编辑edit
。这工作正常,但我不能阻止删除。moveStart
resizeStart
任何建议都非常感谢。
只需捕获 remove 事件并像使用 edit、moveStart 和 reviseStart 事件一样处理它。您应该会在 kendo 调度程序中看到一个删除事件选项。我可以在 2013.3.1119.340 版本中看到并捕获它。
我认为更好的方法是首先防止用户参加remove
活动。处理remove
事件仍然有效,因为您可以删除事件,例如按“删除”键)。
在下面的示例中,我假设事件已调用自定义属性,并且无法删除等于的category
事件。category
"Holiday"
remove: function(e)
{
var event = e.event;
if (event.category === "Holiday")
{
e.preventDefault();
e.stopPropagation();
}
},
dataBound: function(e)
{
var scheduler = e.sender;
$(".k-event").each(function() {
var uid = $(this).data("uid");
var event = scheduler.occurrenceByUid(uid);
if (event.category === "Holiday")
{
// use .k-event-delete,.k-resize-handle if you want to prevent also resizing
$(this).find(".k-event-delete").hide();
}
});
},
edit: function (e) {
var event = e.event;
if (event.category === "Holiday")
{
e.container.find(".k-scheduler-delete").hide();
}
}
仅供参考,您可以这样做...
@(Html.Kendo().Scheduler<ScheduledEventViewModel>()
.Name("scheduler")
.Editable(e => e.Confirmation(false))
)
这将停用调度程序的默认确认提示。然后你可以对你想要的项目做你自己的提示。
还有一个
.Editable(e => e.Destroy(false))
您可以这样做以删除事件窗口上的 X。这个特定示例将为所有事件删除它,但可能有一种方法可以为特定事件删除它。