Предварительная настройка kendo DataSource PageSize для & ldquo; All & rdquo;

Простое решение:

import django.apps
django.apps.apps.get_models()

До использования Django 1.7 вместо этого используйте:

from django.db import models
models.get_models(include_auto_created=True)

Параметр include_auto_created гарантирует, что через таблицы, неявно созданные с помощью ManyToManyField s также будут получены.

1
задан Piotr Jerzy Mamenas 30 January 2019 в 08:06
поделиться

1 ответ

Чтобы ответить на вопрос. Это похоже на ошибку в кендо. Установка для pageSize значения 0 (ярлык для «всего») после того, как источник данных уже был привязан, всегда приведет к тому, что у сетки будут проблемы с любыми пользовательскими фильтрами, объявленными внутри шаблона панели инструментов.

Если быть точным, если у вас есть собственный фильтр, определенный внутри шаблона панели инструментов:

@(Html.Kendo().TextBox().Name("Filter").Deferred())

Вы подключаете его через определение источника данных в сетке, например:

.DataSource(ds =>
    ds.Ajax()
        .PageSize(defaultPageSize)
        .Read(a => a.Action(actionName, controllerName, new
        {
            param = Model.param
        }).Data("getFilterParameters")))
[1110 ] в javaScript, извлекающем параметры, например:

getFilterParameters: function () {
    return this.filterParameters;
},

, заполняющие их методом:

filter: function () {
    var grid = $("#Grid").data("kendoGrid");

    this.filterParameters = {
        param: $("#Filter").val()
    };

    grid.dataSource.page(1);
}

, к которому подключен простой прослушиватель событий:

$("#Filter").on("keyup", filter);
[1113 ] Затем после программного изменения pageSize на 0 / "all" с помощью:

$("#Grid").data("kendoGrid").dataSource.pageSize(0);

Фильтр начнет всегда возвращать NaN в качестве текущей страницы / пропуска объекта фильтра, переданного на сервер с параметрами запроса (хотя сетка будет отображать числа правильно). Это вызовет исключение «строка не в правильном формате» внутри кода платформы на конечной точке всякий раз, когда вы пытаетесь использовать фильтр. Решение вышеупомянутого состоит в том, чтобы немного изменить метод getFilterParameters:

    getFilterParameters: function (e) {
        // Workaround for Kendo NaN pager values if pageSize is set to All 
        if (isNaN(e.page)) e.page = 1;
        if (isNaN(e.skip)) e.skip = 0;
        //
        return this.filterParameters;
    }

Это повторно инициализирует страницу и пропускает значения перед отправкой запроса фильтра. Эти значения в любом случае будут повторно заполнены в конечной точке правильными значениями. Не я это заметил, а еще один разработчик, работающий над проектом, кредит ей

.
0
ответ дан Piotr Jerzy Mamenas 30 January 2019 в 08:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: