4

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

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

我已经通过检查事件属性中的某个字段并调用 , 和事件(如果它应该是只读的)来停止其他e.preventDefault()形式的编辑edit。这工作正常,但我不能阻止删除。moveStartresizeStart

任何建议都非常感谢。

4

3 回答 3

5

只需捕获 remove 事件并像使用 edit、moveStart 和 reviseStart 事件一样处理它。您应该会在 kendo 调度程序中看到一个删除事件选项。我可以在 2013.3.1119.340 版本中看到并捕获它。

于 2014-01-28T01:42:30.543 回答
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();
   }
}
于 2015-10-22T15:26:23.747 回答
2

仅供参考,您可以这样做...

@(Html.Kendo().Scheduler<ScheduledEventViewModel>()
    .Name("scheduler")
    .Editable(e => e.Confirmation(false))
)

这将停用调度程序的默认确认提示。然后你可以对你想要的项目做你自己的提示。

还有一个

.Editable(e => e.Destroy(false))

您可以这样做以删除事件窗口上的 X。这个特定示例将为所有事件删除它,但可能有一种方法可以为特定事件删除它。

于 2014-04-24T21:14:25.753 回答