2013-03-06 24 views
0

我想导出kendo网格数据,以按钮click.EXI上已经尝试过,它的工作,但它只导出一个页面数据和页脚也export.But我想导出没有页脚的总网格数据。我的kendogrid导出功能不能正常工作

我的代码是

$("#btnExport").click(function(e) { 
    window.open('data:application/vnd.ms-excel,' + document.getElementById('grid').outerHTML.replace(/ /g, '%20')); 
    e.preventDefault(); 
}); 
+0

这里isthe拨弄http://jsfiddle.net/SZBrt/ – user2138545 2013-03-06 07:37:31

+0

是否可以更改文件名。当我点击导出按钮时,我正在获取文件名download.xls,而我们是否可以更改此名称。 – user2138545 2013-03-12 07:16:26

回答

1

你的代码是出口网格的outerHTML。这当然包括所有的HTML(页眉,页脚,数据等)。由于您已启用分页功能,网格HTML将仅包含当前的数据页面。

同样在检查你的小提琴之后,似乎你正在使用serverPaging,这意味着你没有所有的数据开始。如果要获取所有数据,则需要禁用serverPaging。然后通过遍历数据源的data()方法的结果来创建网格的HTML。

$("#btnExport").click(function(e) { 

    var data = $("#grid").data("kendoGrid").dataSource.data(); 
    var result = "data:application/vnd.ms-excel,"; 

    result += "<table><tr><th>OrderID</th><th>Freight</th><th>Order Date</th><th>Ship Name</th><th>Ship City</th></tr>"; 

    for (var i = 0; i < data.length; i++) { 
     result += "<tr>"; 

     result += "<td>"; 
     result += data[i].OrderID; 
     result += "</td>"; 

     result += "<td>"; 
     result += data[i].Freight; 
     result += "</td>"; 

     result += "<td>"; 
     result += kendo.format("{0:MM/dd/yyyy}", data[i].OrderDate); 
     result += "</td>"; 

     result += "<td>"; 
     result += data[i].ShipName; 
     result += "</td>"; 

     result += "<td>"; 
     result += data[i].ShipCity; 
     result += "</td>"; 

     result += "</tr>"; 
    } 

    result += "</table>"; 
    window.open(result); 

    e.preventDefault(); 
}); 

这里是更新的jsfiddle:http://jsfiddle.net/SZBrt/4/

+0

ya其工作正常非常感谢你,但这里的问题是过滤网格,然后它的出口所有记录。我想导出页面加载所有数据记录,如果数据过滤只需要导出过滤数据。 – user2138545 2013-03-06 09:46:18

+0

请帮助我,我正在等待您的回复。 – user2138545 2013-03-08 04:26:01

+0

您需要创建一个新的数据源并使用它: var dataSource = $(“#grid”)。data(“kendoGrid”)。dataSource; var filteredDataSource = new kendo.data.DataSource(){dataSource.data(), filter:dataSource.filter() }); var data = filteredDataSource.data(); – 2013-03-08 08:28:37