【问题标题】:Kendo Grid MVC / export to Excel without additional requestKendo Grid MVC / 导出到 Excel 无需额外请求
【发布时间】:2017-11-23 15:24:39
【问题描述】:

如何设置带有MVC扩展的kendo Grid在导出到excel时不做额外的请求?

这里是网格定义。问题是当单击导出到excel按钮时,网格向服务器发出额外请求,需要在没有请求的情况下导出显示的数据。

@(Html.Kendo()
    .Grid<VmTaskItem>()
    .Name("kTasks")
    .Columns(c => {
        c.Bound(m => m.TaskType).Title().Width(150);
    })
    .ToolBar(tb => tb.Excel())
    .Excel(e => e
        .AllPages(false) // must disable request when export
    )
    .DataSource(ds => ds
        .Ajax()
        .PageSize(30)
        .Read(r => r.Action("GetTaskItems", "Home")
        .Type(HttpVerbs.Get))
    ))

来自文档 https://docs.telerik.com/aspnet-mvc/helpers/grid/excel-export

当 AllPages 选项设置为 true 时,Grid 会发出读取所有数据的请求。

另外,在 MVC Grid 的演示页面上,在导出到 excel 时提出添加请求
http://demos.telerik.com/aspnet-mvc/grid/excel-export
在没有 MVC 的 Grid 的演示页面上没有
http://demos.telerik.com/kendo-ui/grid/excel-export

【问题讨论】:

    标签: javascript kendo-ui kendo-grid kendo-asp.net-mvc


    【解决方案1】:

    导出功能会在导出前查询数据。

    MVC 演示发出读取请求,因为如果您未指定,razor Grid 助手默认使用服务器操作,而 javascript 初始化默认为 false。

    如果你明确地将 .ServerOperation(false) 添加到你的 .DataSource 配置中,

    .DataSource(ds => ds
        .Ajax()
        .PageSize(30)
        .Read(r => r.Action("GetTaskItems", "Home")
        .Type(HttpVerbs.Get))
        .ServerOperation(false)
    ))
    

    它不应该在导出数据之前发出请求,它只会导出当前页面。

    如果您需要服务器操作并且在导出之前没有访问服务器...您可能必须覆盖内置导出并自己实现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      相关资源
      最近更新 更多