Kendo UI Gantt - 自定义任务编辑模板

时间:2016-02-10 11:39:53

标签: kendo-ui telerik gantt-chart kendo-gantt

我使用此示例为任务创建了自定义模板:

http://docs.telerik.com/kendo-ui/api/javascript/ui/gantt#configuration-editable.template

<script id="editor" type="text/x-kendo-template">
   <h3>Edit meeting</h3>
   <p><label>Title: <input name="title" /></label></p>
   <p><label>Start: <input data-role="datetimepicker" name="start" /></label></p>
   <p><label>End: <input data-role="datetimepicker" name="end" /></label></p>
</script>

现在我需要添加一个'Resources - Assign'按钮,就像本例中的那个(编辑任务表单): http://demos.telerik.com/kendo-ui/gantt/resources

创建此按钮需要做什么?我找不到甘特控制这一部分的任何API文档。

1 个答案:

答案 0 :(得分:0)

完成此操作需要几个步骤。 首先,将这样的内容添加到您的Kendo模板中:

<div>
  <label for='resources'>Resources:</label>
  <div class='k-gantt-resources' style='display: none;'>
  </div>
  <div class='k-edit-field' data-container-for='resources'>
    <a class='k-button' href='\\#'>Assign</a>
  </div>
</div>

接下来,您需要在初始化窗口小部件时将以下两个事件处理程序添加到选项中:

edit: editHandler,
save: saveHandler

最后,您需要创建上面引用的两个处理程序。您基本上是拦截默认功能并自行打开弹出窗口,然后在完成后保存结果(如果已修改)。

var resoucesdEdited = false;

function editHandler(e)
{
    var gantt = e.sender;
    resoucesdEdited = false;

    if (e.task)
    {
        e.container.on('click', 'div[data-container-for="resources"] > a', function (event)
        {
            event.preventDefault();
            resoucesdEdited = true;
            gantt._createResourceEditor(e.container.find('div.k-gantt-resources'), e.task);
        });
    }
}

function saveHandler(e)
{
    if (e.task && resoucesdEdited)
    {
        this._updateAssignments(e.task.get("id"), e.task.get(this.resources.field));
    }
}

我很高兴您提出这个问题,因为这也是我需要知道的事情,而且您说得对,Telerik / Kendo文档没有提及如何做到这一点!