我正在使用Kendo UI Combos和淘汰赛。我试图级联一个组合的结果来过滤另一个组合的数据。剑道UI断开绑定(级联组合 - parameterMap问题)
父组合中的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; }}}
我敢肯定有一个更好的方式来修改过滤器 - 任何想法?
谢谢。
我以前没有使用过'parameterMap',但是您使用的语法看起来像无效的JS。看起来你只有'data'和'type'变量可供你使用。您也无法返回带有动态属性名称的对象字面值。您需要创建一个对象并将其设置在该对象上,然后返回该对象。 ('var obj = {}; obj [dynamicFieldName] ='ParentId'; return obj;') – 2013-03-25 19:01:43
感谢RP,你说得对,JS语法错误。这是修改后的代码,它成功实现了级联组合,其中父名称与父组合中使用的名称不同。 parameterMap:function(data,action)var filterStem; \t var filter; \t filterStem = '$ inlinecount =所有页&$顶部= 100&$滤波器=(LookUpType +当量+ 15'; \t如果(data.filter.filters [1] ===未定义){ \t \t滤波器= ')' ; } \t else { \t \t filter ='+ and + ParentId + eq +'+ data.filter.filters [1] .value +')'; \t} \t return filterStem + filter; }}} – user2208192 2013-03-26 12:17:40
@ user2208192 - 请不要在评论中发布代码,这是非常难以阅读。请在问题中发布编辑,更好的是,在[jsfiddle](http://jsfiddle.net)发布演示 – 2013-03-26 13:31:49