【发布时间】:2018-05-18 02:16:07
【问题描述】:
我正在尝试以编程方式设置 Kendo Grid 自定义过滤器的过滤器值。我正在应用我的新过滤器值,例如:
gridOptions.dataSource.filter = [
{
field: 'MyField',
operator: 'eq',
value: newTextValue
}
];
我在网格选项中的字段定义如下:
{
width: '140px',
title: 'MyFieldTitle',
field: 'MyField',
filterable: getFieldFilter()
}
使用以下过滤器:
function getFieldFilter() {
return {
cell: {
template: function (args) {
var element = args.element;
element.kendoComboBox({
dataSource: {
transport: {
read: 'api/Items'
}
},
valuePrimitive: true,
dataTextField: 'Description',
dataValueField: 'Code'
});
},
showOperators: false
}
};
}
如果我如上所示应用过滤器,它只有在我单击列中的 kendoComboBox 并再次单击它外部后才有效。
我最初的想法是剑道网格不会应用dataValueField,而只是设置dataTextField。当我检查 kendo 网格发送到服务器的请求时,我看到它正在发送到存储在 kendoComboBox 本身(文本)中的值,而不是它背后的值。
如果我从 UI 中选择 kendoComboBox 中的某些内容,则一切正常。但是如果我像上面那样以编程方式设置它,它不会。
我是否需要刷新某种状态以使 kendoComboBox 刷新其内部值或如何解决此问题?
编辑:
我要做的是从网格中获取kendoCombobox 的值。
var currentlyAppliedFilters = grid.dataSource.filter().filters;
for (var filter of currentlyAppliedFilters) {
if (filter.field === 'MyField') {
var currentlyApplied = filter.value;
}
}
所以上面的代码会给我kendoCombobox 中项目的Description 属性,但我真正想要的是Code 属性。
【问题讨论】:
标签: kendo-ui telerik kendo-grid kendo-combobox