получает данные в conroller, но не отображается в kendo grid

#jquery #asp.net-mvc-5 #kendo-grid

#jquery #asp.net-mvc-5 #kendo-grid

Вопрос:

Я получаю данные в контроллере и возвращаю их с помощью json но в kendo grid я не могу показать, что данные и таблица отображения grid jost и строки данных были отправлены.
мой код контроллера:

         private IRepository<Customer> _UserDetail;
    public UserDetailsController(IRepository<Customer> UserDetail)
    {
        _UserDetail = UserDetail;
    }

    public ActionResult Manage()
    {
        return View();
    }

    [HttpPost]
    public ActionResult GetUsers(DataSourceRequest userDetail)
    {
        var query = _UserDetail.Table.Select(x => x.Email).ToList();

        var gridModel = new DataSourceResult
        {
            Data = query,
            Total = query.Count
        };
        return Json(gridModel);
    }  
  

мой вид сетки kendo:

 <script>
                $(document).ready(function() {
                    $("#user-details").kendoGrid({
                        dataSource: {
                            type: "json",
                            transport: {
                                read: {
                                    url: "@Html.Raw(Url.Action("GetUsers", "UserDetails"))",
                                    type: "POST",
                                    dataType: "json",

                                },
                            },
                            schema: {
                                data: "Data",
                                total: "Total",
                                errors: "Errors",
                            },
                            requestEnd: function(e) {
                                if (e.type == "update") {
                                    this.read();
                                }
                            },
                            error: function(e) {
                                display_kendoui_grid_error(e);
                                // Cancel the changes
                                this.cancelChanges();
                            },
                            serverPaging: true,
                            serverFiltering: true,
                            serverSorting: true
                        },
                        pageable: {
                            refresh: true,
                            numeric: false,
                            previousNext: false,
                            info:false
                        },
                        editable: {
                            confirmation: true,
                            mode: "inline"
                        },
                        scrollable: false,
                        columns: [
                            {
                                field: "Email",
                                title: "User Name",
                                width: 200
                            },
                            {
                                command: [
                                    {
                                        name: "edit",
                                        text: "@T("Admin.Common.Edit")"
                                    }, {
                                        name: "destroy",
                                        text: "@T("Admin.Common.Delete")"
                                    }
                                ],
                                width: 200
                            }
                        ]
                    });
                });
</script>  
 <div id="user-details"></div>  

Комментарии:

1. Какую ошибку вы получаете?

2. да, я пытаюсь ответить на этот вопрос, но теперь я получаю пустые строки без данных. например, я отправляю 4 данные в формате json, и grid отображает 4 пустые строки в grid, а записи не отображаются.

Ответ №1:

я полагаю, что это моя ошибка.
прежде всего, я использовал ICustomerService , на самом деле этот способ лучше, чем IRepository .

 [HttpPost]
    public JsonResult GetUsers([DataSourceRequest]DataSourceRequest command)
    {
        var details = _CustomerDetail
            .GetAllCustomers()
            .Where(z=>z.Email != null)
            .Select(x => new { x.Email , x.Id })
            .ToList()
            .AsQueryable();

        DataSourceResult result = details.ToDataSourceResult(command);
        return Json(result, JsonRequestBehavior.AllowGet);

    }