Мне удалось заставить его работать, хотя, если бы у меня было время, я бы сделал это немного лучше, чем то, что я сделал, фактически создав ветвь кода и выполнив его правильно, но учитывая временные ограничения, что я У меня работа хорошо.
FYI, вот так, как я в конечном итоге получить его делать то, что я хотел:
В моих вариантах сетки, я выключил параметры экспорта 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();
}
}
Вы пробовали данные столы. https: //www.datatables.net/Это jquery based, и у вас есть множество расширений в jq, которые делают это. Больше, таблицы данных очень отзывчивы. nI UI-Grid сделали их lib очень сложным без необходимости. – Gary