ASP.NET MVC Kendo UI Excel 文件名的网格数据

ASP.NET MVC Kendo UI Excel Grid Data for Filename

我有一个可以显示所有产品的网格,但我们有按钮来决定要在网格中显示哪些产品,例如“帽子”、“棒球”或“鞋子”。

选择按钮后,Ajax 调用让我的 jQuery 处理 onDataBound 事件以正确过滤数据,然后 Excel 提取所有数据并不仅仅是 PageSize 设置中显示的数字。

但是,所有报告都称为“Report.xlsx”,我想用产品自定义它们,例如“CapsReport.xlsx”或“BaseballsReport.xlsx”。

如何将此值发送到下面的 FileName("Report.xlsx")

<script>
function onButtonClick() {
  $(this).addClass('active').sublings().removeClass('active');
  var value = $(this).val() + 'Report.xlsx'; // this is the value I want to send to the Excel Filename
  @(Html.Kendo().Grid<Model>().Excel.FileName(value)) // this line is obviously wrong
}
</script>

<div id="ReadTypeBtnGroup" class="btn-group">
    <button type="button" id="caps" value="Caps" class="btn btn-default">Caps</button>
    <button type="button" id="baseballs" value="Baseballs" class="btn btn-default">Baseballs</button>
    <button type="button" id="shoes" value="Shoes" class="btn btn-default">Shoes</button>
</div>
<div class="panel-body">
    @(Html.Kendo().Grid<Model>()
    .AutoBind(false)
    .DataSource(o => o
        .Ajax()
        .Read(o2 => o2.Action("GetReport", "Report"))
        .PageSize(20)
        .ServerOperation(true)
    )
    .Events(o => o.DataBound("onDataBound"))
    .Excel(o => {
        o.AllPages(true);
        o.Collapsible(true);
        o.FileName("Report.xlsx");
    })
    .Name("grid")
    .Pageable()
    .ToolBar(o => {
        o.Excel();
    })
    )
</div>

像这样向 excelExport 事件添加事件处理程序 .Events(e => e.ExcelExport("excelExport"))

您可以在此处更改文件的名称以及其他属性。

例如:

function excelExport(e) {
    e.workbook.fileName = $("#someFieldHoldingFileName").val();
}