Kendo UI:数据源刷新数据后Excel导出无法正常工作

问题描述 投票:4回答:4

我有一个网格,当用户点击一个按钮时,它会获得一些参数并刷新数据源:

var grdUP = $("#weblogGrid").data("kendoGrid");
grdUP.dataSource.transport.options.read.url = url; // new url

//Read data source to update
grdUP.dataSource.read();

它工作正常。新数据显示在网格中。并且网格有另一个按钮,它将数据导出到excel。我正在使用下面的代码(也尝试了内置按钮):

var grid = $("#weblogGrid").data("kendoGrid");
grid.saveAsExcel();

它实际上将数据导出到excel文件。

但是,它始终导出网格中的初始数据,而不是刷新的数据用户。

例如,当网格首次出现时,它有10行数据。刷新后,它有5行数据。现在,如果导出,它仍会导出10行数据,尽管网格中的数据不同。

这是一个Bug吗?或者,也许我在刷新网格中做错了什么?

谢谢

===============================编辑以澄清一些事情

谢谢。目前,我使用以下方法获取新数据:

var url = '/WeblogReport/GetWebLogList?fromDate=' + fromDate + '&toDate=' + toDate;
var grdUP = $("#myGrid").data("kendoGrid");
//Set url property of the grid data source
grdUP.dataSource.transport.options.read.url = url;
//Read data source to update
grdUP.dataSource.read();

所以我改为:

// get value of date
....

$.ajax({
    type: "GET",
    dataType: "json",
    url: "/WeblogReport/GetWebLogList",
    data: { FromDate: fromDate, ToDate: toDate },
    success: function (data) {
        alert(data);

        var grid = $("#myGrid").data("kendoGrid");

        grid.dataSource.data(data);
        grid.refresh();
    }
});

不知何故,它没有显示新数据。有什么建议?

非常感谢你。


添加更多说明

这是在Json电话中。

success: function (data) {
    var newdata = [{ "UserName": "username", "ClientIP": "1.1.1.1"}];

    $("#myGrid").data("kendoGrid").dataSource.data(newdata);
    $("#myGrid").data("kendoGrid").refresh();

    //$("#myGrid").data("kendoGrid").saveAsExcel();
}
kendo-ui kendo-grid kendo-asp.net-mvc
4个回答
0
投票

检查一下:

http://jsfiddle.net/Sowjanya51/o8cw3vj8/

$('#grid1').data('kendoGrid').dataSource.data(newdata);  
$('#grid1').data('kendoGrid').refresh();    

您需要更新dataSource并重新加载网格,否则即使UI显示新数据,网格dataSource仍将引用旧数据。


0
投票

只需将网格上的“allPages”选项设置为“True”即可。像这样:

excel: {
    fileName: "Export.xlsx",
    filterable: true,
    allPages: true
},

0
投票

如果在从数据源读取后刷新网格,则原始解决方案应该没问题。

var grdUP = $("#weblogGrid").data("kendoGrid");
grdUP.dataSource.transport.options.read.url = url; // new url

//Read data source to update
grdUP.dataSource.read();
//add this line to refresh the active data set in the grid
grdUP.refresh();

我遇到了同样的问题,这解决了我。您和我的方法之间的唯一区别是您正在更改数据源的读取URL,而我正在更改读取方法的数据参数。不应该有任何区别,但我会提到以防万一。


0
投票

设置以下两个字段以使Excel导出工作:

grid.dataSource.transport.options.read.url = url;
grid.options.dataSource.transport.read.url = url;
© www.soinside.com 2019 - 2024. All rights reserved.