我正在使用Kendo UI Combos和淘汰赛。我正在尝试级联一个组合的结果来过滤另一个组合中可用的数据。
父组合中的dataTextField值不能用作过滤子组合 数据,所以我使用parameterMap选项来改变它。不幸的是,这似乎不起作用,绑定时收到错误...
Message: SyntaxError: Expected ':';
Bindings value: kendoComboBox:
{scrollable:
{ virtual: true }
,filter: 'contains',
pageable: true,
dataTextField: 'Description',
dataValueField: 'Id',
autoBind: false,
placeholder: 'Select...' ,
cascadeFrom: 'NotifierServiceType',
dataSource:
{type : 'odata',
serverPaging: true,
serverFiltering: true,
serverSorting: true,
pageSize: 100,
filter : {field : 'LookUpType', operator : 'eq', value:15},
transport: {
read: { url: 'http://xxx/INS/services/LookUpService.svc/LookUpItems', dataType: 'json' } ,
parameterMap: function(data, type)
{ return { filter[filters][0][field]: 'ParentId';}
}
}
},
value:notifierSubDivisionId
}
当删除parameterMap部分时,它会正确绑定,但不会按预期过滤子组合。
任何帮助都应该感激不尽。
编辑:
这是修改后的代码,它可以让级联组合工作:
parameterMap: function(data, action) {
var filterStem;
var filter;
filterStem = '$inlinecount=allpages&$top=100&$filter=(LookUpType+eq+15';
if (data.filter.filters[1] === undefined){
filter = ')'; }
else {
filter = '+and+ParentId+eq+' + data.filter.filters[1].value + ')' ;
}
return filterStem + filter; }}}
我确信有更好的方法来修改过滤器 - 任何想法?
感谢。
答案 0 :(得分:0)
你可以为oData尝试kendoUI + jaydata,它是一个获胜的组合。 (免责声明:我为JayData工作)。我们在这里有一个关于级联组合的演示:http://jaydata.org/examples/KendoUI/cascadingcombobox.html 对于简单的级联组合,您只需要几行自定义JavaScript代码。
$data.initService(url)
.then(function (remoteDB) {
$("#categories").kendoComboBox({
placeholder: "Select category...",
dataTextField: "Category_Name",
dataValueField: "Category_ID",
dataSource: remoteDB.Categories.asKendoDataSource()
});
var products = $("#products").kendoComboBox({
autoBind: false,
cascadeFrom: "categories",
placeholder: "Select product...",
dataTextField: "Product_Name",
dataValueField: "Product_ID",
dataSource: remoteDB.Products.asKendoDataSource()
}).data("kendoComboBox");
});