剑道UI Excel导出,生成多个文件,未正确刷新?
我有一个单页应用程序,它经常从数组中创建新数据 var searchData=new kendo.data.DataSource({data:buildData}) 然后将其显示在网格中 这一切看起来都不错,但excel导出的错误行为如下所示: 运行一次搜索,excel导出工作正常 运行第二次搜索,excel导出将下载2个文件,第一个文件是第一次搜索结果的重复,第二个文件是新的搜索结果 运行第三次搜索,excel将导出三个文件。。。。等等 看来刷新对我不起作用,但我不知道为什么不行剑道UI Excel导出,生成多个文件,未正确刷新?,excel,user-interface,kendo-ui,refresh,Excel,User Interface,Kendo Ui,Refresh,我有一个单页应用程序,它经常从数组中创建新数据 var searchData=new kendo.data.DataSource({data:buildData}) 然后将其显示在网格中 这一切看起来都不错,但excel导出的错误行为如下所示: 运行一次搜索,excel导出工作正常 运行第二次搜索,excel导出将下载2个文件,第一个文件是第一次搜索结果的重复,第二个文件是新的搜索结果 运行第三次搜索,excel将导出三个文件。。。。等等 看来刷新对我不起作用,但我不知道为什么不行 if(se
if(searchedArray){
searchedArray.forEach(函数(行){
push({r:rowCount,w:row['w'],n:'1',nl:'2',o:row['o'],t:row['t'],d:row['d'];
行计数++;
});
}
var searchData=new kendo.data.DataSource({data:buildData});
var-sGrid=null;
sGrid=$(“#searchedgrid”).kendoGrid({
工具栏:[“excel”],
卓越:{
文件名:“fileName.xlsx”,
代理URL:“http://demos.telerik.com/kendo-ui/service/export",
可过滤:真
},
数据源:searchData,
可排序:{
模式:“多个”,
allowUnsort:对
},
模式:{
型号:{
字段:{
r:{type:“number”},
w:{type:“number”},
n:{type:“string”},
nl:{type:“string”},
o:{type:“string”},
t:{type:“string”},
d:{type:“date”}
}
}
},
身高:sHeight,
可滚动:对,
可分页:false,
可选:“多单元”,
允许复制:是的,
栏目:[
{字段:“r”,宽度:40,标题:“秩”,模板:'#=r},
{字段:“w”,宽度:50,标题:“重量”,模板:'#=w},
{字段:“n”,标题:“编号”,宽度:“80px”,模板:'#=n},
{字段:“nl”,标题:,宽度:“14px”,模板:'',可排序:false},
{字段:“o”,宽度:200,标题:“所有者”},
{字段:“t”,宽度:400,标题:“title”,属性:{style:'空白:nowrap'},
{字段:“d”,宽度:70,标题:“field”,模板:'#=d}
]
}).数据(“kendoGrid”);
$(“#searchedgrid”).data('kendoGrid').refresh();
由于某些原因,在多次初始化网格时,如果没有适当的内务管理,kendoGrid与导出到excel功能将出现错误
我所做的是只创建一次网格:
$("#grid").kendoGrid({
columns: [
(FIELDS LIST)
],
groupable: false,
pageable: true,
scrollable: true,
filterable: false,
sortable: true,
pageSize: 50
});
然后,在实际回调事件上重置数据源,就像您已经在做的那样
// Set Grid data source
$("#grid").data("kendoGrid").setDataSource(
new kendo.data.DataSource({
//Set the data of the grid as the result array of object.
data: result.customerStatus
})
);
$("#grid").data("kendoGrid").refresh();
我只是通过清除创建网格的div来解决这个问题 加: 其次是:
$("#grid").kendoGrid({
......
});
它通过在选择器后添加.html(“”)对我有效:
$("#grid").html('').kendoGrid({
...
});
尝试将网格上的数据源最初设置为新的数据源,然后在网格的现有数据源上设置数据。$(“#searchedgrid”).data(“kendoGrid”).dataSource.data(buildData);看看这是否会改变什么。--编辑哦,你不需要每次都重新创建网格,这可能存在于活动之外。很好,是的,在活动之外创建网格解决了问题,谢谢。尽管你的问题很具体,但总有其他人会遇到与你相同的问题。今天,那就是我:)
$("#grid").html('').kendoGrid({
...
});