【问题标题】:Kendo UI TreeView: Add only nodes not exisisting in the viewKendo UI TreeView:仅添加视图中不存在的节点
【发布时间】:2016-04-04 13:59:28
【问题描述】:

我在从 ComboBox 和多选中获取数据的页面上有树视图。 ComboBox 包含每种成分的名称,而 multiselect 包含可能的数量类型,然后将其用作所有子节点的名称。

这棵树看起来像这样:

  • 成分 1
    • 100mg
    • 200mg
  • 成分 2
    • 50mg
    • 100mg

一切正常,除了我可以添加两次相同的值,因为我无法验证节点是否已经存在。

这是我用来添加新元素的函数:

var addElement = function () {

    var treeview = $("#ingredientTree").data("kendoTreeView");
    var multiselect = $("#ingredientAmount").data("kendoMultiSelect");
    var ingredientToAdd= $("#ingredient").val();

    // I allways get an empty array at this point.
    var exinstingIngredient= treeview.findByText(ingredientToAdd);

    var children = new Array();
    var amount = multiselect.value();

    for (var j = 0; j < amount.length; j++) {

        children.push({ text: amount[j] });
    }

    // it allways adds the items because the length is allways 0
    if (exinstingIngredient.length === 0) {
        treeview.append({
            text: ingredientToAdd,
            items: children
        });
    }
}

我不明白为什么即使我将其名称设置为文本并搜索此文本,它也找不到现有元素。

编辑:

这里是树视图:

@(Html.Kendo().TreeView().TemplateId("treeview-template").Name("ingredientTree"))

这是成分的来源,它只处理普通字符串:

@(Html.Kendo().ComboBox()
     .Name("ingredient")
     .DataSource(source => source.Read(r => r.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "InternationalIngredients" }))))
     .Events(events => events.Change("onIngredientChanged"))
)

以下是金额的来源,它将字符串处理为:

@(Html.Kendo().MultiSelect()
   .Name("ingredientAmount")
   .DataSource(source => source.Read(read => read.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "InternationalIngredientAmount" })).Data("getIngredient")).ServerFiltering(true)))

这是一个确定服务调用所选成分的函数:

function getIngredient() {
    return { ingredient: $("#ingredient").val() }
}

【问题讨论】:

  • 你能发布树视图和数据源代码吗?

标签: kendo-ui treeview kendo-asp.net-mvc kendo-treeview


【解决方案1】:

我现在找到了问题的原因。 findByText 似乎使用“k-in”类检查节点的内容。不幸的是,当您按照here 所述添加模板时,此内容会被修改。因此,如果您想使用模板查找元素,则应使用 findById 或以可以使用 jQuery 的方式定义模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多