我创建了一个绑定到远程数据源的Kendo Scheduler。远程数据源实际上是两个独立数据源的组合。这部分工作正常。
问题是......有什么办法可以防止某些事件被破坏?
我已经停止了其他形式的编辑,方法是检查事件属性中的某个字段,并在e.preventDefault()
,edit
和moveStart
事件上调用resizeStart
是只读的。这样可以正常工作,但我无法阻止删除。
任何建议都非常感谢。
答案 0 :(得分:5)
只需捕获remove事件并按照edit,moveStart和reviseStart事件处理它。您应该在kendo调度程序中看到删除事件选项。我可以看到它并在版本2013.3.1119.340中捕获它。
答案 1 :(得分:4)
我认为更好的方法是阻止用户首先进入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();
}
}
答案 2 :(得分:2)
仅供参考,你可以这样做......
@(Html.Kendo().Scheduler<ScheduledEventViewModel>()
.Name("scheduler")
.Editable(e => e.Confirmation(false))
)
将取消激活调度程序的默认确认提示。然后,您可以对所需的项目进行自己的提示。
还有一个
.Editable(e => e.Destroy(false))
您可以删除事件窗口中的X.此特定示例将删除所有事件,但可能有一种方法可以删除特定事件。