【发布时间】:2016-06-30 19:23:34
【问题描述】:
我正在尝试将数据导出为剑道网格中的 pdf。
网格:
$("#tax_lists").kendoGrid({
toolbar: ["excel","pdf"],
excel: {
allPages: true,
fileName: "Products.xlsx"
},
pdf: {
allPages: true,
avoidLinks: true,
paperSize: "A4",
margin: { top: "2cm", left: "1cm", right: "1cm", bottom: "1cm" },
landscape: true,
repeatHeaders: true,
template: $("#page-template").html(),
scale: 0.8
},
dataSource: sData,
sortable: true,
resizable: true,
columns: [
{hidden: true, field: "TaxStatementID",attributes:{"class":"tax_statement_id"}},
{field: "Month", title: "Month"},
{field: "AnnualSalary", title: "Annual Salary",attributes:{"class":"AnnualSalary"},footerTemplate: "<div><b>Sum</b> #= compute('.AnnualSalary')#</div>"},
{field: "MonthlySalary", title: "Monthly Salary",attributes:{"class":"MonthlySalary"},footerTemplate: "<div><b>Sum</b> #= compute('.MonthlySalary')#</div>"},
{field: "SlabNo", title: "Tax Slab"},
{field: "MonthlyTax", title: "Monthly Tax", attributes:{"class":"monthly-tax"},footerTemplate: "<div><b>Sum</b> #= compute('.monthly-tax')#</div>"},
{field: "TaxAdjustment", title: "Tax Adjustment",template:"#=TaxAdjustment#"},
{field: "TaxAreas", title: "Tax Arrears"},
{title: "Tax Payable",template:"#=adjustment_type==1?parseFloat(MonthlyTax)+parseFloat(TaxAdjustment)+parseFloat(TaxAreas):(parseFloat(MonthlyTax)+parseFloat(TaxAreas))-parseFloat(TaxAdjustment)#", attributes:{"class":"TaxPayable"},footerTemplate: "<div><b>Sum</b> #= compute('.TaxPayable')#</div>"},
{hidden: true, field: "employee_id",attributes:{"class":"employee_id"}},
{hidden: true, field: "employment_id",attributes:{"class":"employment_id"}},
],
});
首先我尝试使用剑道工具栏 pdf,但它不起作用,它刷新页面而不是导出为 pdf。 然后我将按钮放在网格的顶部。
<button id="grid-pdf">Export to PDF</button>
并定义一个函数
功能:
$("#grid-pdf").kendoButton(
{
click:function(){
var grid = $("#tax_lists").data("kendoGrid").saveAsPDF();
}
});
手动计算总和的计算函数
function compute(){
$(cls).each(function() {
if (cls==".AnnualSalary") {
AnnualSalary += parseInt($(this).text());
}else if(cls==".MonthlySalary"){
MonthlySalary += parseInt($(this).text());
}else if(cls==".monthly-tax"){
monthlyTax += parseInt($(this).text());
}else{
TaxPayable +=parseInt($(this).text());
}
});
if (cls==".AnnualSalary") {
return AnnualSalary;
}else if(cls==".MonthlySalary"){
return MonthlySalary;
}else if(cls=".monthly-tax"){
return monthlyTax;
}else{
return TaxPayable;
}
}
再次失败,它说:
未捕获的类型错误:$(...).data(...).saveAsPDF 不是函数*
我使用的资源:
<script type="text/javascript" src="<?=base_url('assets/plugins/kendo/jszip.min.js')?>"></script>
<script type="text/javascript" src="<?=base_url('assets/plugins/kendo/kendo.all.min.js')?>"></script>
<script type="text/javascript" src="<?=base_url('assets/plugins/kendo/pako_deflate.min.js')?>"></script>
知道这里出了什么问题...
【问题讨论】:
-
.data()返回一个字符串。.saveAsPDF()必须应用于图表。 -
应该是
$("#tax_lists"). getKendoChart().saveAsPDF() -
但我没有使用图表,而是使用网格数据(行和列)将其导出为 pdf
-
嗯,您的代码与此处的示例匹配:onabai.wordpress.com/2014/11/20/… 所以我不确定出了什么问题。
标签: javascript jquery kendo-ui kendo-grid