2015-02-06 19 views
4

我有一个网格,当用户点击一个按钮,它得到了一些参数和刷新数据源:剑道UI:Excel导出数据源不正确后工作清爽数据

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行数据。

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

感谢

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

谢谢。目前,我使用了新的数据:

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(); 
} 

回答

0

检查:

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

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

您需要更新数据源,并重新加载网格,否则电网数据源仍然有参照旧数据,即使UI显示新数据。

+0

谢谢,它看起来很有希望。我在原始问题中添加了更多信息。有什么建议么?不知何故,JSON调用是错误的?谢谢 – urlreader 2015-02-09 23:49:15

+0

grid.dataSource.data(data);这里的'数据'是一个数组?数据源需要一个数组传递给它。 – Andrea 2015-02-10 00:23:57

+0

是的,它是一个数组。我甚至将其设置为常量(请参阅原文),但仍然无法正常工作。然而,你的例子工作。我试图在Json调用中调用saveAsExcel并作为默认按钮,不起作用。似乎对旧数据的引用从未改变过。我正在使用Kendo UI MVC,也许是因为它? – urlreader 2015-02-10 00:55:15

0

只需将网格上的“allPages”选项设置为“True”即可。像这样:如果刷新网格,从数据源读取后

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

http://docs.telerik.com/kendo-ui/web/grid/excel-export 使用'AllPages'选项。 – Sagi 2015-11-29 13:35:06

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,而我改变了读取方法的数据参数。应该没有什么区别,但我会提到这一点以防万一。