Изменить данные сетки кендо с помощью вызова ajax - PullRequest
0 голосов
/ 30 января 2020

Я заполняю сетку кендо из моей модели, которая работает нормально. Я хочу иметь возможность изменять источник данных сетки с помощью вызова ajax, который отличается от начальной загрузки и последующих отключений для фильтрации. Мой вызов ajax возвращает данные модели в json, но данные в сетке не изменяются. Как изменить источник данных и перепривязать сетку?

Первоначальное заполнение и фильтрация

                        @(Html.Kendo().Grid(Model.Catalogs)
                        .Name("grid")
                        .DataSource(dataSource => dataSource
                        .Ajax().ServerOperation(false)
                            .Read(read => read.Action("Index", "Catalog"))
                        )

Ajax вызов, где я хочу заполнить сетку с помощью json. result.Catalogs содержит правильные данные:

$("#btnPartNumberSearch").on('click', function () {
        $.ajax({
            type: "POST",
            url: "Catalog/PartNumberSearch",
            data: JSON.stringify({
                PartNumber: $("#Partnumber").val()
            }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {

                if (result.isCatalogSearch) {
                    $('#inventoryItems').hide();
                    $('#catalogItems').show();
                    $("#grid").data(result.Catalogs);
                }
                else {
                    $('#inventoryItems').show();
                    $('#catalogItems').hide();
                    $("#grid").data(result.Inventory);
                }

            },
            error: function(){
                alert("error");
            }
        });


    }); 

1 Ответ

1 голос
/ 30 января 2020

Ваш синтаксис отключен:

var grid = $("#grid").data("kendoGrid");
grid.dataSource.data(result.Catalogs);

или вы можете создать новый источник данных (может повлиять на настройки столбца):

var dataSource = new kendo.data.DataSource(result.Catalogs);
var grid = $("#grid").data("kendoGrid");
grid.setDataSource(dataSource);

https://docs.telerik.com/kendo-ui/api/javascript/ui/grid/methods/setdatasource

...