Kendo UI未加载数据

时间:2018-11-03 10:31:48

标签: asp.net-mvc kendo-grid kendo-asp.net-mvc kendo-ui-grid

我正在使用Kendo UI(用于ASP.NET MVC R3 2018的Telerik UI),并且尝试将数据加载到其中,但是网格仅显示标题列而不显示数据。我也尝试过调试,但是我不知道是什么问题。我也尝试过this thread,但不能解决我的问题。 以下是我已经完成的工作,并且希望网格能够显示数据。

型号

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;}
 }

查看

@(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 :(得分:1)

您的控制器应具有返回Json结果的方法。

例如

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

并更新您的视图以使用此方法。 (假设您的控制器称为“ PlacementTypeController”)

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

答案 1 :(得分:0)

您定义以下读取动作:

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

因此,请确保您的控制器被命名为PlacementTypeController(使用标准约定)。该方法需要命名为Index。这就是您在上面进行配置的方式。

如果视图已使用索引,则需要将read.Action 索引更改为 SomethingElse 。确保,您的Controller Action也称为 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 中查看并显示是否存在任何错误。另外,请查看“网络”标签。