Kendo Scheduler阻止编辑/销毁某些事件

时间:2014-01-27 17:27:53

标签: kendo-ui kendo-scheduler

我创建了一个绑定到远程数据源的Kendo Scheduler。远程数据源实际上是两个独立数据源的组合。这部分工作正常。

问题是......有什么办法可以防止某些事件被破坏?

我已经停止了其他形式的编辑,方法是检查事件属性中的某个字段,并在e.preventDefault()editmoveStart事件上调用resizeStart是只读的。这样可以正常工作,但我无法阻止删除。

任何建议都非常感谢。

3 个答案:

答案 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.此特定示例将删除所有事件,但可能有一种方法可以删除特定事件。