Kendo Grid не показывает никаких данных, несмотря на наличие данных в DataSource

Итак, я пытаюсь создать готовую сетку с кендо, которая показывает данные, но что бы я ни делал, данные не отображаются.

Сетка выглядит так

А вот код:

    $("#Materials")
        .kendoGrid({
            dataSource: {
                data: [],
                schema: {
                    model: {
                        id: "ID",
                        fields: {
                            ID: { type: "number", editable: false },
                            Code: { type: "string", editable: false },
                            Name: { type: "string", editable: false },
                            ExtDeviceCode: { type: "string", editable: false , nullable: true },
                            BaseUomLOVString: { type: "string", editable: false }
                        }
                    }
                },
                pageSize: 20
            },
            filterable: {
                extra: true
            },
            pageable: true,
            columns: [
                { field: "Code", title:"Code"},
                { field: "Name", title: "Name"},
                { field: "ExtDeviceCode", title:"External device code"},
                { field: "BaseUomLOVString", title: "UnitsOfMeasure" }
            ],
            editable: false
        });

Это создает пустую сетку без данных, которую я позже заполняю вызовом Ajax. Как видно из рисунка выше, сетка содержит данные, но не отображает их. Данные внутри источника данных выглядят так. или как Json:

[{
    "ID": 21150,
    "Code": "3",
    "ExtDeviceCode": null,
    "Name": "Avio benzin",
    "BaseUomLOVString": "Kilogram"
}, {
    "ID": 21400,
    "Code": "5003",
    "ExtDeviceCode": null,
    "Name": "Bencin 95",
    "BaseUomLOVString": "Litre"
}]

ИЗМЕНИТЬ 1: я заполняю данные с помощью вызова Ajax следующим образом:

            $.ajax({
                url: '@SimpleUrlHelper.UrlObjectToRoot(Url)/FuelPointMaterialTankMask/LookupMaterials',
                data: {
                    //Send list of IDs
                    'materialIDs': materialList
                },
                type: "POST",
                success: function (response) {

                    var tmp = [];
                    if (typeof response !== "undefined" && 
                    response !== null) {
                        response.forEach(function(item) {
                            tmp.push(item);
                        });
                    }
                    grid = $("#Materials").data("kendoGrid");
                    originalMaterialDataSource = grid.dataSource;
                    originalMaterialDataSource.data(tmp);
                    originalMaterialDataSource._destroyed = [];
                    originalMaterialDataSource.pageSize(pageSize);
                    originalMaterialDataSource.page(1);
                    originalMaterialDataSource._total = tmp.length;
                    grid.pager.refresh();
                }
            });

person DisplayName    schedule 31.03.2017    source источник
comment
Как вы заполняете сетку после вызова ajax?   -  person ezanker    schedule 31.03.2017
comment
Простите за поздний ответ! Добавлен код вызова Ajax выше в абзац редактирования.   -  person DisplayName    schedule 03.04.2017


Ответы (2)


Вы можете установить свои данные в своем источнике данных после вызова ajax.

var dataArray = [{
    "ID": 21150,
    "Code": "3",
    "ExtDeviceCode": null,
    "Name": "Avio benzin",
    "BaseUomLOVString": "Kilogram"
}, {
    "ID": 21400,
    "Code": "5003",
    "ExtDeviceCode": null,
    "Name": "Bencin 95",
    "BaseUomLOVString": "Litre"
}];

Используйте .data(), чтобы установить:

$("#Materials").data('kendoGrid').dataSource.data(dataArray );
person Cara Tilos    schedule 01.04.2017
comment
Я пытался заполнить данные вашим кодом, как только сетка была создана, и результат тот же. DataSource.data () содержит данные внутри, но $ ('# Materials'). Data ('kendoGrid'). DataSource.view () всегда пуст и ничего не отображается. Это как если бы сетка была свернута. - person DisplayName; 03.04.2017

Итак, после нескольких дней попыток понять, в чем дело, я наконец нашел ответ.

Где-то в том же духе у меня было:

var grids = $('.k-grid');
for (var i = 0; i < grids.length; i++) {
        ....
grid.dataSource.filter().filters[0] = {
       logic: "or",
       filters: filters
}
        ....

По сути, я накладывал фильтры на все сетки, не исключая эту, что было просто ошибкой с моей стороны.

person DisplayName    schedule 03.04.2017