При использовании Kendo UI Grid я могу манипулировать запросами, отправляемыми на сервер, используя опцию parameterMap
в transport
, если для источника данных задано использование serverPaging
, serverFiltering
и / или serverSorting
,В частности, я ищу определенные поля в фильтре запроса на чтение и меняю имя фильтруемого поля.
При выполнении всей моей фильтрации, сортировки и подкачки на стороне клиента transport
параметры, включая parameterMap
, больше не применяются.Есть ли другой способ изменить запросы на фильтрацию для фильтрации на стороне клиента?
Я использую jQuery версии 2017.2.621.
EDIT для включения запрошенного кода.Это для изменения полей на сервере фильтрации / сортировки.Необходимо выполнить это с клиентской стороны.
var dataSourceGrid = new kendo.data.DataSource({
schema: {
model: {
id: "my_line_id",
fields: modelFields
},
data: "data",
total: "total"
},
pageSize: 15,
serverPaging: false,
serverFiltering: false,
serverSorting: false,
transport: {
create: {
url: "./grid.php",
type: "POST",
data: {action: 'read', my_id: my_id},
dataType: "json"
},
read: {
url: "./grid.php",
type: "POST",
data: {action: 'read', my_id: my_id},
dataType: "json"
},
update: {
url: "./grid.php",
type: "POST",
data: {action: 'update', my_id: my_id},
dataType: "json"
},
parameterMap: function(data, type) {
if (type === "read" && data.filter) {
$.each(data.filter.filters, function (i, v) {
if (v.field === 'field_1') {
v.field = 'new_field_1';
}
if (v.field === 'field_2') {
v.field = 'new_field_2';
}
if (v.field === 'field_3') {
v.field = 'new_field_3';
}
if (v.field === 'field_4') {
v.field = 'new_field_4';
}
});
}
if (type === "read" && data.sort) {
$.each(data.sort, function (i, v) {
if (v.field === 'field_1') {
v.field = 'new_field_1';
}
if (v.field === 'field_2') {
v.field = 'new_field_2';
}
if (v.field === 'field_3') {
v.field = 'new_field_3';
}
if (v.field === 'field_4') {
v.field = 'new_field_4';
}
});
}
return data;
}
}
});