Данные не заполняются в сетке после вызова ajax - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь использовать js grid для своего приложения.Я пытаюсь заполнить сетку после AJAX-запроса, но он не работает должным образом.

Я пытаюсь использовать SQL Server в качестве серверной части, и веб-приложение asp.net MVC

Этомой код в html

var table;
        var result;
        var $j = jQuery.noConflict();
        $j(document).ready(function () {

            table = $j('#grid').jsGrid({
                height: "60%",
                width: "50%",
                inserting: true,
                editing: true,
                sorting: true,
                paging: true,
                autoload: true,
                pageSize: 10,
                controller: {
                    loadData: function (filter) {
                        var d = $j.Deferred();
                         $j.ajax({
                            type: "POST",
                            contentType: "application/json",
                            url: "@Url.Action("LoadData", "User")",
                            datatype: "json",
                            data: filter
                            @*success: function (data) {
                                result = data.data;
                                console.log("result", result);
                                d.resolve(result)
                            },
                            error: function (data) {
                                window.location.href = '@Url.Action("Error", "Audit")';
                            }*@
                        }).done(function (data) {
                            console.log("response", data);
                            console.log("data.data", data.data);
                            d.resolve(data)
                            });
                        return d.promise();

                    },
                    fields: [
                        { name: "LastName", type: "text"},
                        { name: "FirstName", type: "text"},
                        { name: "Email", type: "email"},
                        { name: "PhoneNumber", type: "number"},
                        { type: "control" }
                    ]
                }
            });
        });

В Контроллере я возвращаю

''return Json(new { data }, JsonRequestBehavior.AllowGet);''

Я ожидаю, что данные JSON будут связаны в DIV.Но это не так?Спасибо

1 Ответ

0 голосов
/ 17 мая 2019

Хорошо, поэтому у меня недавно возникла эта проблема.

Прежде всего, измените свою высоту на px, auto или полностью избавьтесь от нее.Он не делает то, что, как вы думаете, он делает.

Далее, поскольку у вас есть пейджинг, вам необходимо вернуть данные в следующем формате:

{ 
  data: [{your list here}],
  itemsCount: {int}
}

Это едва ли в документации, так каквстроенный и не очень очевидный.(Выделено жирным шрифтом.)

loadData - это функция, возвращающая массив данных или обещание jQuery, которое будет разрешено с массивом данных (когда pageLoading имеет значение true вместо объекта, структура {data: [items], itemsCount: [общее количество элементов]} должны быть возвращены).Принимает параметр фильтра, включая текущие параметры фильтра и параметры подкачки, когда

http://js -grid.com / docs / # controller

...