ฉันกำลังพยายามตั้งค่าตัวกรองของตัวกรองแบบกำหนดเองของ 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
เมื่อฉันตรวจสอบคำขอที่กริดเคนโด้ส่งไปยังเซิร์ฟเวอร์ ฉันเห็นว่ามันกำลังส่งไปยังค่าที่เก็บไว้ใน kendoComboBox เอง (ข้อความ) และไม่ใช่ค่าด้านหลัง
ถ้าฉันเลือกบางอย่างใน kendoComboBox จาก UI ทุกอย่างก็ใช้ได้ดี แต่ถ้าผมตั้งค่าแบบโปรแกรมเหมือนด้านบน มันก็ไม่ได้เป็นเช่นนั้น
ฉันจำเป็นต้องรีเฟรชสถานะบางอย่างเพื่อให้ kendoComboBox รีเฟรชค่าภายในหรือฉันจะแก้ไขปัญหานี้ได้อย่างไร
แก้ไข: สิ่งที่ฉันกำลังพยายามทำคือการรับค่าของ kendoCombobox
จากกริด
var currentlyAppliedFilters = grid.dataSource.filter().filters;
for (var filter of currentlyAppliedFilters) {
if (filter.field === 'MyField') {
var currentlyApplied = filter.value;
}
}
ดังนั้นโค้ดด้านบนจะให้คุณสมบัติ Description
ของรายการใน kendoCombobox
แก่ฉัน แต่สิ่งที่ฉันต้องการจริงๆ คือคุณสมบัติ Code