Мне удалось заставить его работать, хотя, если бы у меня было время, я бы сделал это немного лучше, чем то, что я сделал, фактически создав ветку кода и сделав это правильно, но с учетом временных ограничений, что у меня есть работает хорошо.
К вашему сведению, вот как я закончил делать то, что хотел:
В параметрах сетки я отключил параметры экспорта CSV в меню сетки (поскольку я реализовал изменения только для PDF).
Я сделал копию exporter.js, назвал ее custom.exporter.js и изменил свою ссылку, чтобы она указывала на новый файл.
В custom.exporter.js я сделал копию функции getData и назвал ее getGridRows. getGridRows — это то же самое, что и getData, за исключением того, что он просто возвращает объект rows без всего того, что получает столбцы и так далее. На данный момент я кодирую его для работы с известным набором столбцов, поэтому мне все это не нужно.
Я изменил функцию pdfExport следующим образом:
pdfExport: function (grid, rowTypes, colTypes) {
var self = this;
var exportData = self.getGridRows(grid, rowTypes, colTypes);
var docContent = [];
$(exportData).each(function () {
docContent.push(
{
table: {
headerRows: 1,
widths: [70, 80, 150, 180],
body: [
[{ text: 'Job Raised', bold: true, fillColor: 'lightgray' }, { text: 'Job Number', bold: true, fillColor: 'lightgray' }, { text: 'Client', bold: true, fillColor: 'lightgray' }, { text: 'Job Title', bold: true, fillColor: 'lightgray' }],
[formattedDateTime(this.entity.JobDate,false), this.entity.JobNumber, this.entity.Client, this.entity.JobTitle],
]
}
});
var subGridContentBody = [];
subGridContentBody.push([{ text: 'Defect', bold: true, fillColor: 'lightgray' }, { text: 'Vendor', bold: true, fillColor: 'lightgray' }, { text: 'Status', bold: true, fillColor: 'lightgray' }, { text: 'Sign off', bold: true, fillColor: 'lightgray' }]);
$(this.entity.Defects).each(function () {
subGridContentBody.push([this.DefectName, this.DefectVendor, this.DefectStatus, '']);
});
docContent.push({
table: {
headerRows: 1,
widths: [159, 150, 50, 121],
body: subGridContentBody
}
});
docContent.push({ text: '', margin: 15 });
});
var docDefinition = {
content: docContent
}
if (self.isIE()) {
self.downloadPDF(grid.options.exporterPdfFilename, docDefinition);
} else {
pdfMake.createPdf(docDefinition).open();
}
}
person
Matt Eno
schedule
31.12.2015