У меня так много проблем с попыткой загрузить данные в дочернюю сетку в Kendo MVC, что первая сетка загружается нормально, но когда я расширяю этого пользователя, дочерняя сетка ничего не показывает. Даже если я поставлю точку останова в своем контроллере, событие Read
не будет вызвано. Когда я щелкаю столбец для фильтрации, метод Read
возвращает ошибку
Словарь параметров содержит нулевую запись для параметра «id» ненулевого типа «System.Int32» для метода «System.Web.Mvc.ActionResult ReadBalances (Kendo.Mvc.UI.DataSourceRequest, Int32)» в «Apple.Web .Контроллеры.Контроллер баланса». Необязательный параметр должен быть ссылочным типом, типом, допускающим значение NULL, или быть объявленным как необязательный параметр. Номер параметра: параметры
Я не получаю никаких ошибок в 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);
}
Индекс.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>