剣道 UI コンボとノックアウトを使用しています。あるコンボの結果をカスケードして、別のコンボで利用可能なデータをフィルタリングしようとしています。
親コンボの 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; }}}
フィルターを修正するより良い方法があると確信しています-何かアイデアはありますか?
ありがとう。