我想在按钮点击时将kendo网格数据导出为excel。我已经尝试了一个,它正在工作,但它只导出一个页面数据和页脚也导出。但我想导出没有页脚的总网格数据。
我的代码是
$("#btnExport").click(function(e) {
window.open('data:application/vnd.ms-excel,' + document.getElementById('grid').outerHTML.replace(/ /g, '%20'));
e.preventDefault();
});
答案 0 :(得分: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/