【问题标题】:Kendo MVC Grid not loading data on child templateKendo MVC Grid 未在子模板上加载数据
【发布时间】:2018-04-21 15:33:14
【问题描述】:

我在尝试将数据加载到 Kendo MVC 中的子网格时遇到了很多麻烦 第一个网格加载正常,但是当我展开该用户时,子网格不显示任何内容。即使我在我的控制器中放置了一个断点,Read 事件也不会被调用。当我点击一列过滤Read方法返回错误

参数字典包含一个 null 条目,用于参数 'id' 的不可空类型 'System.Int32' 用于方法 'System.Web.Mvc.ActionResult ReadBalances(Kendo.Mvc.UI.DataSourceRequest, Int32)' in ' Apple.Web.Controllers.BalanceController'。可选参数必须是引用类型、可空类型或声明为可选参数。 Nombre del parametro: 参数

我在客户端 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>

【问题讨论】:

    标签: c# asp.net-mvc kendo-grid kendo-asp.net-mvc kendo-template


    【解决方案1】:

    我认为对父网格和子网格使用相同的字段名称id 可能是个问题。根据Kendo,由于字段名称相同,一个会覆盖另一个,所以应该使用不同的字段名称。尝试将父网格的id 更改为parentID

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 2015-03-22
      • 2016-06-23
      • 1970-01-01
      相关资源
      最近更新 更多