我在尝试将数据加载到Kendo MVC中的子网格时遇到了很多麻烦
第一个网格加载正常但是当我扩展该用户时,子网格没有显示任何内容。即使我在控制器中放置了断点,也不会调用Read
事件。当我单击一列来过滤Read
方法时返回错误
参数字典包含非可空类型'System.Int32'的参数'id'的空条目,用于方法'System.Web.Mvc.ActionResult ReadBalances(Kendo.Mvc.UI.DataSourceRequest,Int32)'in' Apple.Web.Controllers.BalanceController”。可选参数必须是引用类型,可空类型,或者声明为可选参数。 Nombredelparámetro:参数
我在客户端javascript上没有收到任何错误。
控制器
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
var users = _userProcessor.Get(Constants.USER_TYPE_CLIENT).Result as List<User>;
return Json(users.ToDataSourceResult(request));
}
public ActionResult ReadBalances([DataSourceRequest] DataSourceRequest request, int id)
{
var balances = _balanceProcessor.Get(id).Result as List<Balance>;
DataSourceResult result = balances.ToDataSourceResult(request, balance => new {
Id = balance.Id,
Amount = balance.Amount,
UserId = balance.UserId,
Description = balance.Description,
Date = balance.Date
});
return Json(result, JsonRequestBehavior.AllowGet);
}
Index.cshtml
@(Html.Kendo().Grid<Apple.DataLayer.Types.User>()
.Name("gridUsers")
.Columns(columns =>
{
columns.Bound(c => c.Name);
columns.Bound(c => c.LastName);
columns.Bound(c => c.Balance);
})
.Sortable()
.Pageable()
.Scrollable()
.Filterable(f => f.Extra(false))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(u => u.Id);
})
.Read(read => read.Action("Read", "Balance"))
)
.HtmlAttributes(new { style = "height: 550px;", id = "gridUsers" })
.ClientDetailTemplateId("client-template")
)
<script id="client-template" type="text/kendo-template">
@(Html.Kendo().Grid<Apple.DataLayer.Types.Balance>()
.Name("grid_#=Id#")
.ToolBar(toolbar =>
{
toolbar.Custom().Text("Nuevo").HtmlAttributes(new { onclick = "return Nuevo(#=Id#, this);" });
})
.Columns(columns =>
{
columns.Bound(c => c.Date).Width(150).Format("{0:dd/MM/yyyy hh:mm}");
columns.Bound(c => c.Description);
columns.Bound(c => c.Amount);
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(d => d.Id);
})
.Read(read => read.Action("ReadBalances", "Balance", new { id = "#=Id#" }))
.PageSize(5)
)
.Pageable()
.Sortable()
.Filterable()
.ToClientTemplate()
)
</script>
答案 0 :(得分:0)
我认为对父网格和子网格使用相同的字段名称id
可能是一个问题。根据{{3}},由于字段名称相同,因此将覆盖另一个字段名称,因此应使用不同的字段名称。尝试将父网格id
更改为parentID
。