我正在尝试将标准字符串过滤器的默认行为更改为组合框(下拉列表)。
当我使用与所需值不同的显示名称时,我遇到了一些问题。
例如:
我的应用程序中有i18n,因此组合中的每个项目都应以正确的语言显示,特定标签所指的值仍然必须保持不变。
这是你通常所期望的。
问题是我做不到。
这是我的gridOptions的代码:
public gridOptions() {
return {
scrollable: false,
selectable: 'row',
schema: {
model: { id: 'id' }
},
filterable: {
messages: {
isFalse: 'Is false',
isTrue: 'Is True'
}
},
columns: [{
field: 'name',
title: '{{\'name\' | translate }}'
},
{
field: 'combo',
title: '{{\'combo\' | translate }}',
filterable: {
extra: false,
operators: {
string: {
eq: 'Is Equals to'
}
},
ui: (e) => { this.filter(e) },
cell: {
showOperators: false,
template: (c) => { this.filterRow(c) },
}
}
}
]
};
}
使用两个创建下拉列表的函数:
private filter(element) {
this.myService.getData().then( data => {
element.kendoDropDownList(
{
dataTextField: 'displayName',
dataValueField: 'name',
dataSource: data,
optionLabel: '--select a value--'
}
};
});
}
private filterRow(container) {
this.filter(container.element);
}
我期望过滤器显示已翻译的字段(例如:名称为“绿色”时为绿色),并且“name”属性的值用于过滤。
相反,当我在组合框中选择某些内容时,选择不会被过滤器隐藏。
奇怪的是,如果我将字段'name'用作dataTextField而将任何其他字段用作dataValueField(我使用'isworkingfornoreason'作为字段!!)一切正常。过滤器有效,但组合框元素显然是默认字符串,未翻译。
你能帮我弄清楚发生了什么吗?