Kendo UI 树视图 在树视图中添加文本框和组合框

Kendo UI Tree View Add text box and combo box inside tree view

我们的 Web 应用程序中已经实现了 kendo 树视图。在我们的新要求ui评论中,我们必须在树视图中添加一些额外的控件。

我正在 kendo-ui 中寻找 inbuilt 功能,我可以在树视图控件中添加文本框或组合框。 我浏览了 kendo 站点上可用的许多主题,但没有得到任何类似的实现。

请参考下面的屏幕截图以了解确切的要求ui回复。

我认为没有 built-in 功能。这是一种自定义行为,因此您必须自己制作。您可以使用模板来实现它。由于您没有添加任何代码,我自己做了一个演示:

小部件配置:

  $("#treeview").kendoTreeView({
    dataSource: {
      data: [{ 
        text: "Item 1",
        value: 1,
        showCombo: false,
        checked: false,
        items: [{
          text: "Item 1.1",
          value: 2,
          showCombo: true,
            checked: false
        },{
          text: "Item 1.2",
          value: 3,
          showCombo: true,
            checked: true
        }]
      }]
    },
    checkboxes: true,
    template: kendo.template($("#item-template").html())
  });

  $("#treeview")
    .on("change", "input.k-checkbox", function() {
        var $select = $(this).closest("div").find("select");

        if ($select.length > 0) {
        $select[($(this).is(":checked") ? "show" : "hide")]();
      }
    });

模板:

<script id="item-template" type="text/x-kendo-template">
# if (data.item.showCombo) { #
    #= data.item.text #
    <select # if (!data.item.checked) { # #="style='display:none'"# # } #>
    <option></option>
    <option>Mechanical Engineering</option>
    <option>Chemical Engineering</option>
    <option>Electrical Engineering</option>
  </select>
# } else { #
    #= data.item.text #
# } #
</script>

希望对您有所帮助。

Demo

您可以使用 Kendo 选项对象的模板配置,如建议的 DontVoteMeDown。这是一个更适合您要求的解决方案: 向需要它的树节点添加另一个数据条目:

{
   text: "Item 1.1",
    value: 2,
    checked: false,
    extraOptions: ["", "Electrical Engineer", "Software Engineer"] // <-- Like this
}

然后在模板中这样使用:

<script id="item-template" type="text/x-kendo-template">
    # if (data.item.extraOptions) { #
        #= data.item.text #
        <select>
        # for (let index in data.item.extraOptions) { #
            # if (index == +index) { #
                <option>#= data.item.extraOptions[index] #</option>
            # } #
        # } #
        </select>
    # } else { #
        #= data.item.text #
    # } #
</script>

你可以看到一个demo on Plunker.