Kendo UI MVC 网格导出到 Excel 什么都不做
Kendo UI Grid for MVC export to Excel does nothing
我正在为 MVC 4.0 使用 Kendo 网格。我有最新的 DLL 2015.1.318.440
。我包括 jszip.js
。我复制并粘贴了示例中的代码:
.ToolBar(tools => tools.Excel())
.Excel(excel => excel.FileName("Enrollments.xlsx"))
它什么都不做。按钮改变颜色,仅此而已。我尝试时没有收到任何错误。它只是什么都不做。我没有使用代理服务器。我是 运行 这个 Chrome 最新版本。
网格
@(Html.Kendo().Grid<Trawick.Agents.Models.EnrollmentPolicy>()
.Name("grid")
.ToolBar(tools => tools.Excel())
.Excel(excel => excel
.FileName("Enrollments.xlsx")
.Filterable(true)
.ProxyURL(Url.Action("Excel_Export_Save", "Enrollments"))
)
.Columns(columns =>
{
columns.Bound(p => p.enrollment_date)
})
.Pageable()
.Groupable()
.Sortable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Enrollments_Read", "Enrollments")))
)
控制器
[HttpPost]
public ActionResult Excel_Export_Save(string contentType, string base64, string fileName)
{
var fileContents = Convert.FromBase64String(base64);
return File(fileContents, contentType, fileName);
}
public ActionResult Enrollments_Read([DataSourceRequest]DataSourceRequest request, int? id)
{
string sql = "SELECT * FROM EnrollmentPolicy ";
sql += SearchParams.SetSearch(this);
return Json(GetEnrollments(sql).ToDataSourceResult(request));
}
包含 jszip 的捆绑文件
bundles.Add(new ScriptBundle("~/js/kendo")
.Include("~/Scripts/jszip.js")
.Include("~/Scripts/kendo.all.min.js")
.Include("~/Scripts/kendo.aspnetmvc.min.js"));
根据文档,我认为您需要这样做。
控制器
[HttpPost]
public ActionResult Excel_Export_Save(string contentType, string base64, string fileName)
{
var fileContents = Convert.FromBase64String(base64);
return File(fileContents, contentType, fileName);
}
cshtml
.Excel(excel => excel
.FileName("Enrollments.xlsx")
.Filterable(true) //omit this if you don't need filtering in excel
.ProxyURL(Url.Action("Excel_Export_Save", "Grid")) // for browsers not supporting saving file from JS
)
我刚才遇到了同样的问题 - 导出按钮没有任何作用。我是 运行 Q3 2014 版本的 Kendo。
升级到最新的 DLL 并更新到最新的 JavaScript 库和样式为我解决了这个问题。
bundles.Add(new ScriptBundle("~/js/kendo")
.Include("~/Scripts/kendo.all.min.js")
.Include("~/Scripts/kendo.aspnetmvc.min.js")
.Include("~/Scripts/jszip.js"));
这是 issue.jszip 必须包含在 kendo 脚本之后(这与文档所说的相反)。
我的问题与数量有关 - 较少数量的记录有效,大批量则无效。我当前的解决方法是设置 AllPages(false),然后它只会导出过滤后的列表。参见 http://www.telerik.com/forums/excel-export-not-working-with-more-than-a-thousand-records
我正在为 MVC 4.0 使用 Kendo 网格。我有最新的 DLL 2015.1.318.440
。我包括 jszip.js
。我复制并粘贴了示例中的代码:
.ToolBar(tools => tools.Excel())
.Excel(excel => excel.FileName("Enrollments.xlsx"))
它什么都不做。按钮改变颜色,仅此而已。我尝试时没有收到任何错误。它只是什么都不做。我没有使用代理服务器。我是 运行 这个 Chrome 最新版本。
网格
@(Html.Kendo().Grid<Trawick.Agents.Models.EnrollmentPolicy>()
.Name("grid")
.ToolBar(tools => tools.Excel())
.Excel(excel => excel
.FileName("Enrollments.xlsx")
.Filterable(true)
.ProxyURL(Url.Action("Excel_Export_Save", "Enrollments"))
)
.Columns(columns =>
{
columns.Bound(p => p.enrollment_date)
})
.Pageable()
.Groupable()
.Sortable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Read(read => read.Action("Enrollments_Read", "Enrollments")))
)
控制器
[HttpPost]
public ActionResult Excel_Export_Save(string contentType, string base64, string fileName)
{
var fileContents = Convert.FromBase64String(base64);
return File(fileContents, contentType, fileName);
}
public ActionResult Enrollments_Read([DataSourceRequest]DataSourceRequest request, int? id)
{
string sql = "SELECT * FROM EnrollmentPolicy ";
sql += SearchParams.SetSearch(this);
return Json(GetEnrollments(sql).ToDataSourceResult(request));
}
包含 jszip 的捆绑文件
bundles.Add(new ScriptBundle("~/js/kendo")
.Include("~/Scripts/jszip.js")
.Include("~/Scripts/kendo.all.min.js")
.Include("~/Scripts/kendo.aspnetmvc.min.js"));
根据文档,我认为您需要这样做。
控制器
[HttpPost]
public ActionResult Excel_Export_Save(string contentType, string base64, string fileName)
{
var fileContents = Convert.FromBase64String(base64);
return File(fileContents, contentType, fileName);
}
cshtml
.Excel(excel => excel
.FileName("Enrollments.xlsx")
.Filterable(true) //omit this if you don't need filtering in excel
.ProxyURL(Url.Action("Excel_Export_Save", "Grid")) // for browsers not supporting saving file from JS
)
我刚才遇到了同样的问题 - 导出按钮没有任何作用。我是 运行 Q3 2014 版本的 Kendo。
升级到最新的 DLL 并更新到最新的 JavaScript 库和样式为我解决了这个问题。
bundles.Add(new ScriptBundle("~/js/kendo")
.Include("~/Scripts/kendo.all.min.js")
.Include("~/Scripts/kendo.aspnetmvc.min.js")
.Include("~/Scripts/jszip.js"));
这是 issue.jszip 必须包含在 kendo 脚本之后(这与文档所说的相反)。
我的问题与数量有关 - 较少数量的记录有效,大批量则无效。我当前的解决方法是设置 AllPages(false),然后它只会导出过滤后的列表。参见 http://www.telerik.com/forums/excel-export-not-working-with-more-than-a-thousand-records