Kendo Scheduler 防止编辑/破坏某些事件

Posted

技术标签:

【中文标题】Kendo Scheduler 防止编辑/破坏某些事件【英文标题】:Kendo Scheduler prevent editing/destruction of certain events 【发布时间】:2014-02-18 16:25:19 【问题描述】:

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

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

我已通过检查事件属性中的某个字段并在 editmoveStartresizeStart 事件上调用 e.preventDefault()(如果它应该是只读的)来停止其他形式的编辑。这很好用,但我无法阻止删除。

非常感谢任何建议。

【问题讨论】:

【参考方案1】:

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

【讨论】:

是的。我是愚蠢的......我正在寻找一个销毁事件并完全错过了删除事件。 话虽如此...捕获删除事件并不完美,因为它发生在弹出确认之后——这给用户一种可以删除事件的印象。理想情况下,我不想显示这些“只读”事件的确认信息。 垫子,你有没有运气阻止确认弹出窗口? 对于未来的访问者,为了实现这一点,我最终从 readonly-events 中删除了 .k-event-delete.k-resize-handle 元素(在 dataBound 事件中执行此操作)。 ***.com/questions/29074344/… 这个问题有什么解决办法吗?【参考方案2】:

我认为更好的方法是首先阻止用户去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();
   

【讨论】:

【参考方案3】:

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

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

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

还有一个

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

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

【讨论】:

以上是关于Kendo Scheduler 防止编辑/破坏某些事件的主要内容,如果未能解决你的问题,请参考以下文章

Kendo Scheduler 事件在取消编辑后消失

Kendo UI Scheduler:仅删除/编辑/更新指定的事件

Kendo Scheduler删除其他月份的Line

防止kendo ui网格弹出编辑器在验证错误后关闭

如何设计 Kendo Scheduler 的周末

如何在 Kendo.Scheduler 中自定义行或列颜色?