2015-04-07 40 views
0

我在ASP.NET MVC視圖中使用AJAX填充了Kendo網格,並且當我嘗試通過屬性FacturasCabecera.NFactura進行分組時,我得到了Javascript錯誤d.ArtFacturasCabecera is undefined,所以劍道網格掛起。網格中模型的一個元素是FacturasCabecera,它是另一個包含我想要分組的屬性的模型對象。網格的代碼,這是一個Razor視圖是:使用AJAX在Kendo Grid中分組時出現Javascript錯誤

@(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); 

我懷疑劍道電網不能正確處理這種模型...

+0

有什麼辦法可以減少代碼*只是*有什麼相關的? – wahwahwah

+0

我減少了一些代碼,但我仍然保留了大部分代碼,以便可以看到模型的結構。 – Magnus

+0

'ToDataSourceResult()'將執行組查詢,檢查'result1'並查看模型是否已正確創建。 – Nicholas

回答

0

使一個沒有嵌套的新模型解決了這個問題。我猜肯頓網格不適用於嵌套模型。

相關問題