剑道UI Excel导出,生成多个文件,刷新不正常?

Posted

技术标签:

【中文标题】剑道UI Excel导出,生成多个文件,刷新不正常?【英文标题】:Kendo UI Excel export, generating multiple files, not refreshed properly? 【发布时间】:2015-09-07 10:24:56 【问题描述】:

我有一个单页应用程序,它经常从数组中创建新数据

var searchData = new kendo.data.DataSource(data: buildData);

然后在网格中显示,

这一切看起来都不错,除了 excel 导出错误行为如下:

运行一次搜索,excel 导出工作正常。

运行第二次搜索,excel 导出下载 2 个文件,第一个是第一次搜索结果的重复,第二个文件是新搜索。

运行第三次搜索,excel 导出三个文件....等等...

似乎刷新对我不起作用,但我不知道为什么不这样做?

	if(searchedArray) 
                searchedArray.forEach(function (row) 
                buildData.push(r:rowCount,w:row['w'],n:'1',nl:'2',o:row['o'],t:row['t'],d:row['d'];
                    rowCount++;
                );
            
            var searchData = new kendo.data.DataSource(data: buildData);


	var sGrid=null;
	
	sGrid = $("#searchedgrid").kendoGrid(
		        toolbar: ["excel"],
		        excel: 
		            fileName: "filename.xlsx",
		            proxyURL: "http://demos.telerik.com/kendo-ui/service/export",
		            filterable: true
		        ,
		        dataSource: searchData,
		        sortable: 
		            mode: "multiple",
		            allowUnsort: true
		        ,
		        schema: 
		            model: 
		                fields: 
		                    r:  type: "number" ,
		                    w:  type: "number" ,
		                    n:  type: "string" ,
		                    nl:  type: "string" ,
		                    o:  type: "string" ,
		                    t:  type: "string" ,
		                    d:  type: "date" 
		                
		            
                ,
                height: sHeight,
                scrollable: true,
                pageable: false,
		selectable: "multiple cell",
                allowCopy: true,
                columns: [
                     field: "r",width: 40,title: "Rank",template:'<center>#=r#</center>',
                     field: "w",width: 50,title: "Weight",template:'<center>#=w#</center>',
                     field: "n", title: "Number", width: "80px",template:'<center>#=n#</center>',
                     field: "nl", title: "&nbsp;", width: "14px",template:'<center><a href="#=nl#" onclick="javascript:void window.open(\'#=nl#\',\'details\',\'width=800,height=600,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=0,top=0\');return false;"><div class="ambLink" id="detaillink" title="View details"></div></a></center>',sortable:false,
		     field: "o",width: 200,title: "Owner",
                     field: "t",width: 400,title: "Title",  attributes: style: 'white-space: nowrap ' ,
                     field: "d",width: 70,title: "Filed",template:'<center>#=d#</center>'
                ]
            ).data("kendoGrid");  

	$("#searchedgrid").data('kendoGrid').refresh();

【问题讨论】:

尝试将网格上的dataSource最初设置为新的dataSource,然后将数据设置在网格现有的DataSource上。 $("#searchedgrid").data("kendoGrid").dataSource.data(buildData);看看这是否改变了什么。 jsbin.com/hucezo/edit?js --Edit 哦,你不应该每次都重新创建网格,它可能应该存在于事件之外。 太好了,是的,在活动之外创建网格解决了问题,谢谢。 尽管您的问题很具体,但总会有人遇到与您相同的问题。今天,就是我 :) 【参考方案1】:

通过在选择器后添加 .html('') 对我有用:

$("#grid").html('').kendoGrid(
    ...
);

【讨论】:

【参考方案2】:

我通过清除创建网格的 div 以某种方式解决了这个问题。

添加:

document.getElementById("grid").innerHTML = "";

接着是:

$("#grid").kendoGrid(
......
);     

【讨论】:

【参考方案3】:

由于某种原因,当您多次初始化网格时,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();

【讨论】:

以上是关于剑道UI Excel导出,生成多个文件,刷新不正常?的主要内容,如果未能解决你的问题,请参考以下文章

剑道网格导出到 Excel 货币格式

DotNetZip生成多个excel文件损坏-踩坑填坑系列

在Kendo ui中,Excel导出无法使用jquery。

java批量数据导出多个excel,为啥老是只生成一个excel文件

剑道网格导出日期格式不正确

将剑道网格导出到excel时格式化为文本的数字