Javascript 使用 AJAX 在 Kendo 网格中分组时出错

Javascript error when grouping in Kendo Grid with AJAX

我有一个 Kendo 网格,在 ASP.NET MVC 视图中填充了 AJAX,当我尝试按 属性 FacturasCabecera.NFactura 分组时,我得到 Javascript 错误 d.ArtFacturasCabecera is undefined,因此 Kendo 网格挂起。网格中模型的元素之一是 FacturasCabecera,它是另一个包含我要分组依据的 属性 的模型对象。 Razor 视图中的网格代码是:

@(Html.Kendo().Grid<Macromed.Models.ArtFacturasDetalleModels>()
    .Name("GridAuditoria")
    .Columns(
        columns =>
        {
            columns.Bound(e => e.ArtFacturasCabecera.Nfactura).Title("Nro. Factura").Groupable(true);
            columns.Bound(e => e.ArtFacturasCabecera.FchFactura).Title("Fecha Factura").ClientTemplate("#= kendo.toString(kendo.parseDate(ArtFacturasCabecera.FchFactura), 'dd MMM yyyy') #").Groupable(false);
            columns.Bound(e => e.NItem).Title("Nro. Item").Groupable(false);
            columns.Bound(e => e.Codigo).Title("Código").Groupable(false);
            columns.Bound(e => e.ArtFacturasCabecera.FchPago).Title("Fecha pago").ClientTemplate("#= kendo.toString(kendo.parseDate(ArtFacturasCabecera.FchPago), 'dd MMM yyyy') #").Groupable(false);
            columns.Bound(e => e.ArtFacturasCabecera.FchVencimiento).Title("Fecha vencimiento").ClientTemplate("#= kendo.toString(kendo.parseDate(ArtFacturasCabecera.FchVencimiento), 'dd MMM yyyy') #").Groupable(false);
            columns.Bound(e => e.MontoFacturado).Title("Monto Facturado").ClientTemplate("#= kendo.toString(MontoFacturado,'c')#").Groupable(false);
            columns.Bound(e => e.AuditoriaDetalle.MontoTeorico).Title("Monto Teorico").ClientTemplate("#= kendo.toString(AuditoriaDetalle.MontoTeorico,'c')#").Groupable(false);
            columns.Bound(e => e.IdTraslado).Title("").ClientTemplate(@Html.ActionLink("Ajustar traslado", "AjustarTraslado",
            new { id = "#=IdTraslado#", idFactura = "#=IdFactura#", NItem = "#=NItem#", fechadesde = ViewBag.fechadesde, fechahasta = ViewBag.fechahasta }).ToHtmlString());
        })
    .Groupable(group => group.Enabled(true).Messages(mm => mm.Empty("Arrastre un Encabezado de Columna y Colóquela aquí para Agrupar")))
    .DataSource(
        datasource => datasource.Ajax()
                .PageSize(10)
                .Read(read => read.Action("GetFacturaAjustar", "AuditoriaTraslados", new { id = ViewBag.id, fechadesde = ViewBag.fechadesde, fechahasta = ViewBag.fechahasta }))
                .Model(model =>
                {
                    model.Id(p => p.IdFactura);
                    model.Field(p => p.ArtFacturasCabecera.FchFactura);
                }))
)

这是从数据库中获取数据的代码如下:

IQueryable<ArtFacturasDetalleModels> objfactura = from facturadet in db.ArtFacturasDetalle
  from facturacab in db.ArtFacturasCabecera
  from auditoriadet in db.AuditoriaDetalle
  from itemauditoria in db.AuditoriaDetalleItems
  where facturacab.IdFactura == facturadet.IdFactura
  && facturacab.IdFactura == auditoriadet.IdFactura &&
  facturacab.IdFactura == itemauditoria.IdFactura &&
  auditoriadet.IdAuditoria == itemauditoria.IdAuditoria &&
  facturadet.NItem == itemauditoria.NItem
  && facturacab.IdPrestador == id &&
  auditoriadet.Auditado == "S" && auditoriadet.Ajustar == "S" &&
  itemauditoria.ItemAuditado == true && itemauditoria.AjustarItem == true
  select new ArtFacturasDetalleModels
  {
      IdFactura = facturadet.IdFactura,
      NItem = facturadet.NItem,
      Codigo = facturadet.Codigo,
      MontoFacturado = facturadet.MontoFacturado,
      IdTraslado = facturadet.IdTraslado,
      ArtFacturasCabecera = new ArtFacturasCabeceraModels
      {
          IdPrestador = facturacab.IdPrestador,
          FchFactura = (DateTime)facturacab.FchFactura,
          FchPago = facturacab.FchPago,
          FchVencimiento = facturacab.FchVencimiento,
          Nfactura = facturacab.Nfactura
      },
      AuditoriaDetalle = new AuditoriaDetalleModels
      {
          IdAuditoria = auditoriadet.IdAuditoria,
          IdFactura = facturadet.IdFactura,
          MontoTeorico = auditoriadet.MontoTeorico
      }
  };
DataSourceResult result1 = objfactura.ToDataSourceResult(request1);
return Json(result1);

我怀疑 Kendo 网格不能正确处理这种模型...

制作一个没有嵌套的新模型解决了这个问题。我想 Kendo 网格不适用于嵌套模型。