4

此处显示的非常简单的案例:http: //jsbin.com/ahoYoPi/3/edit

我需要指定要针对父值字段过滤(eq)的孩子的内部字段是“category_id”......当然,剑道的文档没有说明如何做到这一点......或者它是不是超级明显不值得解释?

    var categoriesList = new Array (
    {"id":"1","categoryName":"Fruits"},
    {"id":"2","categoryName":"Vegetables"} );

var productsList = new Array(
    {"id":"1","categorie_id":"1","productName":"Apples"},
    {"id":"2","categorie_id":"1","productName":"Oranges"},
    {"id":"3","categorie_id":"2","productName":"Carottes"},
    {"id":"4","categorie_id":"2","productName":"Patatoes"});

$("#categories").kendoDropDownList({
    dataTextField: "categoryName",
    dataValueField: "id",
    dataSource: categoriesList,
    optionLabel: "----------------" ,
    change: function() {
        $("#products").data("kendoDropDownList").value(0);
    }
});
$("#products").kendoDropDownList({
    cascadeFrom: "categories",
    dataTextField: "productName",
    dataValueField: "id",
    dataSource: productsList,
    optionLabel: "----------------" ,
});
4

1 回答 1

4

有关级联的文档可在此处获得:http ://docs.kendoui.c​​om/getting-started/web/combobox/cascading

以下是过滤的工作原理:

如果父级有一个值,则子级将被启用并根据它过滤其数据。过滤器选项如下所示: field: "parentID", //the dataValueField of the parent operator: "eq", value: "" //parent's value

这意味着子下拉列表(组合框)将使用dataValueField父级配置的字段进行过滤(级联)。在您的情况下,这不起作用,因为dataValueField父级设置为“id”。productsList然而,该字段在数组中具有不同的用途。

目前没有允许指定用于级联的字段的功能。

你有两个选择:

  1. 按照@OnaBai 的建议去做。将“id”字段重命名categoriesList为“categorie_id”并进行dataValueField相应设置。
  2. 手动实现级联。首先删除 cascadeFrom 选项,然后在父级的更改事件中执行此操作:

    change: function() {
        var products = $("#products").data("kendoDropDownList");
    
        products.dataSource.filter( {
          field: "categorie_id",
          value: this.value(),
          operator: "eq"
        });
    
        products.value(0);
    }
    

    这是一个现场演示:http: //jsbin.com/ogEj/1/edit

于 2013-08-21T12:27:32.423 回答