Пользовательский интерфейс Kendo не загружает данные - PullRequest
0 голосов
/ 03 ноября 2018

Я использую Kendo UI (Telerik UI для ASP.NET MVC R3 2018) и пытаюсь загрузить в него данные, но в сетке отображаются только столбцы заголовков без данных. Я также попробовал отладку, но я не могу понять, в чем проблема. Я также пробовал эту тему , но это не решает мою проблему. Ниже приведено то, что я сделал, и я ожидаю, что сетка покажет данные.

Модель

public partial class PlacementType
{
    public byte Id { get; set; }

    [Display(Name = "Placement Name")]
    public string PlacementName { get; set; }

    [DataType(DataType.Date)]
    [Display(Name = "Date Created")]
    public DateTime? DateCreated { get; set; }

    [Display(Name = "Created By")]
    public string CreatedBy { get; set; }

    public string Description{get; set;}
 }

View

@(Html.Kendo().Grid<PlacementType>()
    .Name("Grid")
    .Columns(columns =>
        {
            columns.Bound(c => c.PlacementName);
            columns.Bound(c => c.DateCreated);
            columns.Bound(c => c.CreatedBy);
            columns.Bound(c => c.Description);
        }
    )
    .HtmlAttributes(new { style = "height: 550px;" })
    .Scrollable()
    .Groupable()
    .Sortable()
    .Pageable(pageable => pageable.Refresh(true).PageSizes(true))
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Index", "PlacementType"))
        .PageSize(20)
    )
)

Действие контроллера

 public ActionResult Index()
 {
     List<PlacementType> types = db.PlacementTypes.ToList();
     return View(types);
 }

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вы определяете следующее действие чтения:

.Read(read => read.Action("Index", "PlacementType"))

Поэтому убедитесь, что ваш контроллер имеет имя PlacementTypeController (со стандартным соглашением). Метод должен быть назван Index. Вот как вы настроили это выше.

Если индекс уже используется вашим представлением, вам нужно изменить read.Action Индекс на SomethingElse . Убедитесь, что ваше действие контроллера также называется SomethingElse Тогда.

Тогда должен работать следующий код:

public ActionResult Index([DataSourceRequest] DataSourceRequest request)
{
    // var breakPoint = db.PlacementTypes.ToList(); // uncomment and set a breakpoint to see if you have data
    return Json(db.PlacementTypes.ToDataSourceResult(request));
}

Обратите внимание на использование атрибута DataSourceRequest и метода ToDataSourceResult.

Если это все еще не работает, раскомментируйте комментарий и установите точку останова. Действительно ли ваша база данных возвращает данные?

Также посмотрите в консоли браузера CTRL + F12 и покажите, есть ли ошибки. Также взгляните на вкладку Сеть.

0 голосов
/ 03 ноября 2018

Ваш контроллер должен иметь метод, который возвращает результат Json.

Е.Г.

public JsonResult GetPlacementTypes()
{
     var types = db.PlacementTypes.ToList();
     return Json(types, JsonRequestBehavior.AllowGet);
}

И обновите ваше мнение, чтобы использовать этот метод. (Предположим, ваш контроллер называется «PlacementTypeController»)

.Read(read => read.Action("GetPlacementTypes", "PlacementType"))
...