2014-12-24 5 views
0

У меня есть сетка mvc kendo, и я пытаюсь экспортировать данные в excel.Kendo MVC - Экспорт в Excel

Это мой .chhtml.

<div class="panel-body table-responsive"> 
    @{ 
     var gridBuilder = CodeTaskKendoGrid.CreateTaskGrid(Model.TaskOverviewList, Model.ViewableExtraFields, this.Html, Model.Configuration); 

     gridBuilder.ToolBar(tools => tools.Excel()) 
      .Excel(excel => excel 
       .AllPages(true) 
       .ProxyURL(Url.Action("Excel_Export_Save", "Task")) 
      ); 
    } 
    @gridBuilder.ClientDetailTemplateId("client-template") 

</div> 
<script id="client-template" type="text/x-kendo-template"> 
# if (SubTasks != null && SubTasks.length > 0) { # 
<text> 

    <table class="adra-kendo-table"> 
     # var j = SubTasks.length; # 
     # for(var i = 0; i < j; i++) { # 
     # var ownerName= SubTasks[i].OwnerName; # 
     # var taskStatusId= SubTasks[i].TaskStatusId; # 
     # var taskId = SubTasks[i].Id; # 
     # var periodId = SubTasks[i].PeriodId; # 
     # var teamId = SubTasks[i].TeamId; # 
     <tr> 
      <td>#: SubTasks[i].Id #</td> 
      <td>#: SubTasks[i].Name #</td> 

      <td class="# @CodeTaskKendoGrid.OwnerClass("ownerName") #"># @CodeTaskKendoGrid.OwnerName("ownerName") #</td> 
      <td>#: SubTasks[i].TaskStatus #</td> 
      <td>#: SubTasks[i].ApprovalStatus #</td> 
      <td><a class="btn btn-warning btn-xs" href="/Task/EditTask?taskId=#=taskId#&amp;periodId=#=periodId#&amp;teamId=#=teamId#" type="button">Edit</a></td> 
     </tr> 

     # } # 
    </table> 

</text> 
# } # 

И это где я генерировать сетку (это еще один .cshtml файл, и я использую его для создания т сетки. Я называю этот метод в этом файле из указанного выше файла)

public static GridBuilder<DtoTaskExtended> CreateTaskGrid(IEnumerable<DtoTaskExtended> taskList, IEnumerable<DtoExtraField> viewableExtraFields , System.Web.Mvc.HtmlHelper htmlHelper, TaskGridConfig gridConfig) 
{ 

    ExtraFieldConfigs = viewableExtraFields; 
    Helper = htmlHelper; 
    GridConfig = gridConfig; 
    var retObj = Helper.Kendo().Grid(taskList) 

     .Name("AdraKendoGrid") 
     .DataSource(dataSource => dataSource 
       .Ajax() 
       .Read(read => read.Action("GetTaskResult", "Task")) 
     ) 

     .Columns(ColumnsConfigurator) 
     .Groupable(gr => gr.Messages(message => message.Empty(Strings.kendoGroupMsg))) 
     .Pageable(pager => pager.PageSizes(new int[] { 15, 50, 100, 500 }) 
      .Info(true) 
      .Messages(message => message.Display("{0} - {1} " + Strings.of + "{2} " + Strings.items)) 
      .Messages(message => message.ItemsPerPage(Strings.itemsPerPage)) 
      .Messages(message => message.Empty(Strings.noItemsToDisplay))) 
     .Resizable(r => r.Columns(true)) 
     .Sortable() 
     .Reorderable(reorder => reorder.Columns(true)) 
     .Resizable(r => r.Columns(true)) 

     .ColumnMenu(); 



    return retObj; 
} 

И, наконец, это мое действие контроллера, которое должно быть вызвано с помощью кнопки импорта excel.

[HttpPost] 
    public ActionResult Excel_Export_Save(string contentType, string base64, string fileName) 
    { 
     var fileContents = Convert.FromBase64String(base64); 

     return File(fileContents, contentType, fileName); 

    } 

Но это действие контроллера даже не вызывается при нажатии кнопки импорта Excel в сетке.

Что я делаю неправильно? Любое предложение приветствуется. Спасибо.

После определения этой

.ToolBar(tools => tools.Excel()) 
     .Excel(excel => excel 
      .AllPages(true) 
      .ProxyURL(Url.Action("Excel_Export_Save", "Task")) 
     ); 

и создания соответствующих методов действий, я должен делать что-нибудь еще?

Я пробовал много примеров, но кнопка (Экспорт в Excel) ничего не делает. Я импортировал файл jsZip.js (как указано в Kendo Demo). Я следую приведенным ниже примерам.

http://demos.telerik.com/aspnet-mvc/grid/excel-export

http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/excel-export

Любой вид помощи ценится. Я застрял здесь.

ответ

0

Вопрос был с версией Kendo MVC, которую я использовал. Экспорт Excel поддерживается в версии Kendo 2014 Q3 (2014.3.1119).

1

Одно решение является:

<script src="//cdnjs.cloudflare.com/ajax/libs/jszip/2.4.0/jszip.min.js"></script>

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