Sono riuscito a farlo funzionare, anche se avessi il tempo lo farei un po 'meglio di quello che ho fatto creando effettivamente un ramo del codice e facendolo correttamente, ma a causa di vincoli di tempo, cosa ho ha funzionato bene
Cordiali saluti, ecco il modo in cui ho finito per convincerlo per fare quello che volevo:
Nelle mie opzioni griglia, ho spento le opzioni di esportazione CSV nel menu a griglia (perché ho implementato solo le modifiche per PDF).
Ho creato una copia di exporter.js, l'ho chiamata custom.exporter.js e ho cambiato il mio riferimento in modo che punti al nuovo file.
In custom.exporter.js, ho creato una copia della funzione getData e l'ho chiamata getGridRows. getGridRows è uguale a getData, tranne per il fatto che restituisce l'oggetto rows senza tutto ciò che ottiene le colonne e così via. Per ora, lo sto codificando per funzionare con un noto set di colonne, quindi non ho bisogno di tutto questo.
ho modificato la funzione pdfExport essere il seguente:
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();
}
}
Hai provato data-tabelle. https: //www.datatables.net/E 'basato su jQuery e hai un sacco di estensioni in jq che fa questo. Inoltre, le tabelle di dati sono molto reattive. ng UI-Grid ha reso la loro lib molto complicata inutilmente. – Gary