Kendo Scheduler 防止编辑/破坏某些事件
Posted
技术标签:
【中文标题】Kendo Scheduler 防止编辑/破坏某些事件【英文标题】:Kendo Scheduler prevent editing/destruction of certain events 【发布时间】:2014-02-18 16:25:19 【问题描述】:我创建了一个绑定到远程数据源的 Kendo 调度程序。远程数据源实际上是两个独立数据源的组合。这部分工作正常。
问题是……有什么办法可以防止某些事件被破坏?
我已通过检查事件属性中的某个字段并在 edit
、moveStart
和 resizeStart
事件上调用 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 防止编辑/破坏某些事件的主要内容,如果未能解决你的问题,请参考以下文章