Saya mencoba mengatur nilai filter dari Filter Kustom Kendo Grid secara terprogram. Saya menerapkan nilai filter baru saya seperti:
gridOptions.dataSource.filter = [
{
field: 'MyField',
operator: 'eq',
value: newTextValue
}
];
Definisi bidang saya dalam opsi kisi terlihat seperti:
{
width: '140px',
title: 'MyFieldTitle',
field: 'MyField',
filterable: getFieldFilter()
}
Dengan filter berikut:
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
}
};
}
Jika saya menerapkan filter seperti yang ditunjukkan di atas, itu hanya berfungsi setelah saya mengklik kendoComboBox di kolom dan mengklik lagi di luarnya. Pikiran awal saya adalah kendo grid tidak akan menerapkan dataValueField
dan hanya mengatur dataTextField
. Ketika saya memeriksa permintaan yang dikirim kendo grid ke server, saya melihat bahwa itu dikirim ke nilai yang disimpan di kendoComboBox itu sendiri (teks) dan bukan nilai di belakangnya.
Jika saya memilih sesuatu di kendoComboBox dari UI, semuanya berfungsi dengan baik. Tapi kalau saya atur secara terprogram seperti di atas, tidak.
Apakah saya perlu menyegarkan beberapa jenis status agar kendoComboBox menyegarkan nilai internalnya atau bagaimana cara mengatasi masalah ini?
EDIT: Apa yang saya coba lakukan adalah mendapatkan nilai kendoCombobox
dari grid.
var currentlyAppliedFilters = grid.dataSource.filter().filters;
for (var filter of currentlyAppliedFilters) {
if (filter.field === 'MyField') {
var currentlyApplied = filter.value;
}
}
Jadi kode di atas, akan memberi saya properti Description
dari item di kendoCombobox
, tetapi yang sebenarnya saya ingin dapatkan adalah properti Code
.