Ich schaffte es, es zum Laufen zu bringen, obwohl, wenn ich die Zeit hätte, ich es ein bisschen besser machen würde, als was ich getan habe, indem ich wirklich einen Zweig des Codes schuf und es richtig machte, aber gegebenen Zeitbeschränkungen, was ich habe gut funktioniert.
FYI, hier ist die Art, wie ich es immer am Ende zu tun, was ich wollte:
In meinen Rasteroptionen, drehte ich die CSV-Exportoptionen im Grid-Menü aus (weil ich nur die Änderungen implementiert habe für PDF).
Ich habe eine Kopie von exporter.js erstellt, nannte es custom.exporter.js und änderte meine Referenz auf die neue Datei.
In custom.exporter.js habe ich eine Kopie der Funktion getData erstellt und getGridRows benannt. getGridRows ist das gleiche wie getData, außer dass es nur das rows-Objekt ohne all die Sachen zurückgibt, die die Spalten usw. bekommen. Im Moment kodiere ich es, um mit einem bekannten Satz von Spalten zu arbeiten, also brauche ich das alles nicht.
Ich veränderte die pdfExport Funktion wie folgt zu sein:
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();
}
}
Haben Sie Daten-Tabellen versucht. https: //www.datatables.net/Es ist jquery basiert und Sie haben viele Erweiterungen in jq, die dies tun. Mehr, Datentabellen sind sehr reaktionsschnell. ng UI-Grid haben ihre lib unnötig unnötig kompliziert gemacht. – Gary