我想在Kendo Grid上隐藏一些列,并将它们作为可见列导出到excel.但是,使用隐藏(true)或Visible(false)没有任何意义,并且不会导出这些字段.
this页面上的变通方法无效.任何的想法?
视图:
@(Html.Kendo().Grid<Contactviewmodel>() .Name("Grid") .Columns(columns => { columns.Bound(m => m.NameSurname).Title("Name Surname").Width("%100"); columns.Bound(m => m.InstituteName).Title("Institute Name").Width("250px"); columns.Bound(m => m.CityName).Title("City").Width("145px"); columns.Bound(m => m.RegionName).Title("Region").Width("145px"); columns.Bound(m => m.ContactMobile).Title("Mobile").Width("125px"); columns.Bound(m => m.ContactAddress).Title("Address").Hidden(true); //I want to export these fields columns.Bound(m => m.ContactAddress).Title("Address").Visible(false); //I want to export these fields }) .ToolBar(toolbar => { toolbar.Template(@<text> <div class="toolbar"> <button class="btn btn-primary btn-xs pull-right k-button k-button-icontext k-grid-excel"> <span class="k-icon k-excel"></span> Liste (xls) </button> </div> </text>); }) .Excel(excel => excel .FileName("List.xlsx") .Filterable(true) .AllPages(true) .ProxyURL(Url.Action("Excel_Export_Save","Controller")) ) .DataSource(dataSource => dataSource .Ajax() .Read(read => read.Action("Index_Read","Controller")) .ServerOperation(false) .PageSize(12) ) ) )
解决方法
请参阅此解决方案
Plunker,建议在
Telerik网站上找到解决方案.
要在导出功能中显示列,请绑定该网格的“excelExport”事件.
要在导出功能中显示列,请绑定该网格的“excelExport”事件.
var exportFlag = false; $("#grid").data("kendoGrid").bind("excelExport",function (e) { if (!exportFlag) { // e.sender.showColumn(0); for demo // for your case show column that you want to see in export file e.sender.showColumn(5); e.sender.showColumn(6); e.preventDefault(); exportFlag = true; setTimeout(function () { e.sender.saveAsExcel(); }); } else { e.sender.hideColumn(5); e.sender.hideColumn(6); exportFlag = false; } });
<!DOCTYPE html> <html> <head> <base href="http://demos.telerik.com/kendo-ui/grid/excel-export"> <style> html { font-size: 12px; font-family: Arial,Helvetica,sans-serif; } </style> <title></title> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.318/styles/kendo.common-material.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.318/styles/kendo.material.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.318/styles/kendo.dataviz.min.css" /> <link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.318/styles/kendo.dataviz.material.min.css" /> <script src="http://cdn.kendostatic.com/2015.1.318/js/jquery.min.js"></script> <script src="http://cdn.kendostatic.com/2015.1.318/js/jszip.min.js"></script> <script src="http://cdn.kendostatic.com/2015.1.318/js/kendo.all.min.js"></script> </head> <body> <div id="example"> <div id="grid" style="width: 900px"></div> <script> $("#grid").kendoGrid({ toolbar: ["excel"],excel: { fileName: "Kendo UI Grid Export.xlsx",proxyURL: "http://demos.telerik.com/kendo-ui/service/export",filterable: true },dataSource: { type: "odata",transport: { read: "http://demos.telerik.com/kendo-ui/service/Northwind.svc/Products" },schema: { model: { fields: { UnitsInStock: { type: "number" },ProductName: { type: "string" },UnitPrice: { type: "number" },UnitsOnOrder: { type: "number" },UnitsInStock: { type: "number" } } } },pageSize: 7 },sortable: true,pageable: true,columns: [{ width: "10%",field: "ProductName",title: "Product Name",hidden: true },{ width: "10%",field: "UnitPrice",title: "Unit Price" },field: "UnitsOnOrder",title: "Units On Order" },field: "UnitsInStock",title: "Units In Stock" }] }); var exportFlag = false; $("#grid").data("kendoGrid").bind("excelExport",function (e) { if (!exportFlag) { e.sender.showColumn(0); e.preventDefault(); exportFlag = true; setTimeout(function () { e.sender.saveAsExcel(); }); } else { e.sender.hideColumn(0); exportFlag = false; } }); </script> </div> </body> </html>