Kendo UI DataSource / Grid Изменить параметры фильтра клиента - PullRequest
0 голосов
/ 06 марта 2019

При использовании 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;
            }
        }
    });
...