我正在使用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);
}
答案 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 中查看并显示是否存在任何错误。另外,请查看“网络”标签。