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

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

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

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

非常感谢任何建议。

【问题讨论】:

    标签: kendo-ui kendo-scheduler


    【解决方案1】:

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

    【讨论】:

    • 是的。我是愚蠢的......我正在寻找一个销毁事件并完全错过了删除事件。
    • 话虽如此...捕获删除事件并不完美,因为它发生在弹出确认之后——这给用户一种可以删除事件的印象。理想情况下,我不想显示这些“只读”事件的确认信息。
    • 垫子,你有没有运气阻止确认弹出窗口?
    • 对于未来的访问者,为了实现这一点,我最终从 readonly-events 中删除了 .k-event-delete.k-resize-handle 元素(在 dataBound 事件中执行此操作)。
    • stackoverflow.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。这个特定的示例会为所有事件删除它,但可能有一种方法可以为特定事件删除它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-12
        • 1970-01-01
        • 2014-02-15
        • 2019-06-25
        • 2015-07-15
        • 2014-07-16
        • 2022-08-22
        相关资源
        最近更新 更多