我的kendogrid导出功能无法正常工作

时间:2013-03-06 05:49:54

标签: javascript visual-studio-2010 kendo-ui

我想在按钮点击时将kendo网格数据导出为ex​​cel。我已经尝试了一个,它正在工作,但它只导出一个页面数据和页脚也导出。但我想导出没有页脚的总网格数据。

我的代码是

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

1 个答案:

答案 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/