2016-02-02 2 views
2

Kendo grid-export to excel не отвечает при попытке экспортировать более 4000 записей, чтобы преуспеть ... И его даже не бросать сообщение об ошибке ... Может кто-то попросит совета или предложит работу для этого.Telerik Kendo grid-export to excel не отвечает при попытке экспортировать более 4000 записей в excel

Вот код для кэндо сетки

      @(Html.Kendo().Grid(Model) 
     .Name("Billinggrid") 

     .Columns(columns => 
     { 
      columns.Bound(c => c.groupid).Width(75).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.groupname).Width(125).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.groupeffectivedate).Width(90).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.recipientdatareceived).Width(95).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.recipientsent).Width(100).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.accountmanager).Width(125).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.billinggroup).Width(75).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.reportyearmonth).Width(85).Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.recordcount).Width(55).Filterable(false).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.datafilecount).Width(50).Filterable(false).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.datacharge).Format("{0:c}").Filterable(false).Sortable(false).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.printcharge).Format("{0:c}").Filterable(false).Sortable(false).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.insertcharge).Format("{0:c}").Filterable(false).Sortable(false).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.envelopecharge).Format("{0:c}").Filterable(false).Sortable(false).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
      columns.Bound(c => c.postage).Format("{0:c}").Filterable(false).Sortable(false); 
      columns.Bound(c => c.total).Format("{0:c}").Filterable(false).Sortable(false); 
      columns.Bound(c => c.postageremaining).Width(95).Format("{0:c}").Filterable(true).Sortable(true).HeaderHtmlAttributes(new { style = "overflow: visible; white-space: normal" }); 
     }) 

     .Resizable(resizable => resizable.Columns(true)) 
     .Reorderable(reorderable => reorderable.Columns(true)) 
     .Pageable(pager => pager.PageSizes(new int[] { 10, 25, 50, 100, 500 }) 
      .Messages(messages => messages.ItemsPerPage(" items displayed")) 
      ) 
     .Sortable() 
     .Scrollable(scr => scr.Height("auto")) 
     .HtmlAttributes(new { style = "Font-size:x-small" }) 

     //.ToolBar(tools => tools.Excel()) 
     .Excel(excel => excel 
      .FileName("Billing_Report-" + DateTime.Now + ".xlsx") 
      .AllPages(true) 
      //.Filterable(true) 
      .ProxyURL(Url.Action("Excel_Export_Save", "Report")) 
      ) 
     //.Filterable(ftb => ftb.Mode(GridFilterMode.Row)) 

     .ToolBar(toolbar => 
+0

Я встретил такую ​​же проблему. Однако моя сетка остановила экспорт из 2000 записей (но у меня было около 40 столбцов). Поскольку он экспортируется с клиентской стороны, я предполагаю, что это будет какая-то проблема с памятью ... К сожалению, я не решил ее ... Я просто отключая кнопку экспорта telerik из некоторого количества записей. Поэтому я голосую, этот вопрос мне интересен. – Ademar

ответ

0

С поста в Telerik форуме System Out of Memory

Когда OpenAccess выполняет запрос фактического извлечения результатов разделяется на куски. Размер выборки определяет количество записей, которые считываются из базы данных за один проход. С запросом, который возвращает много записей, это означает, что размер выборки не превышен, и не все 40 000 записей будут извлекаться за один раз в памяти. Итерируя по данным результата, вы получите несколько чтений из базы данных до окончания итерации. Однако, когда вы перебираете результирующий набор, последующие чтения накапливаются, когда вы сохраняете ссылки на объекты, которые повторяются. Исключение из памяти может быть вызвано, когда вы работаете со всеми записями из сетки. Способ избежать такой ошибки состоял бы в том, чтобы работать с данными в кусках. Например, поисковая система для сетки и опция, которая экспортирует данные последовательно со всех страниц, достигнут этого. Цель состоит в том, чтобы попытаться уменьшить количество объектов, хранящихся в памяти за раз, и позволить сборке мусора освободить ненужную память. Запрос LINQ с функциями Skip() и Take() идеален в тех случаях, когда наличие всех данных в памяти является дорогостоящим.

Смежные вопросы