2015-11-17 7 views
5

Я использую сетку от http://ui-grid.info/ в проекте. Я создал иерархическую сетку, которая работает хорошо, но когда я делаю экспорт, он только экспортирует данные из сетки верхнего уровня.Может ли субстрим экспортироваться в угловой ui-сетке

Это по дизайну и является стандартной функциональностью для сетки, поэтому мне нет смысла размещать какой-либо пример кода. Любой пример от http://ui-grid.info/docs/#/tutorial будет делать.

Есть ли способ экспортировать подсечку (желательно как основную сетку, так и подсечку вместе, как они появляются в сетке)?

+0

Вы пробовали данные столы. https: //www.datatables.net/Это jquery based, и у вас есть множество расширений в jq, которые делают это. Больше, таблицы данных очень отзывчивы. nI UI-Grid сделали их lib очень сложным без необходимости. – Gary

ответ

3

К сожалению, ответ отрицательный.

Как можно видеть here функцию getData итерацию по всем строкам и затем через все столбцы, добавляя в массив extractedFields столбцов, которые будут извлечены и агрегирование те, в массиве extractedRows.

Это означает, что данные, отличные от того, что определено в gridOptions 'columnDef, будут считаны, преобразованы и извлечены.

По дизайну информация о субгрипах хранится внутри свойства любого объекта строки subGridOptions, но это свойство никогда не открывается внутри функции экспортера.

Мотивация такого поведения заключается в том, что функция расширяемой сетки все еще находится на альфа-стадии, поэтому поддержка этого в других функциях не является неотразимым приоритетом.

Кроме того, добавление Подсеточного к CSV может быть довольно трудно разработать, если мы хотим, чтобы обеспечить общее решение (например, я даже не думаю, что это будет совместимо со стандартом CSV если вы имели разное количество столбцов основная сетка и субгриды).

Это означает, что ui-grid - проект с открытым исходным кодом, поэтому, если у вас есть рабочий проект, не стесняйтесь открывать дискуссию об этом на project gitHub page или, что еще лучше, если вы можете проектировать рабочий (и протестировано) и создать запрос на растяжение, даже лучше!

+0

Чтобы сохранить экспортированный файл в стандарте csv, может быть, каждая сетка занимает отдельный csv. Ячейка главной сетки, состоящая из субгрид, включает ссылку на внешний файл csv подзаголовка ... просто подумал поделиться. – gm2008

+0

Как вы думаете, какие ссылки могут быть? Я искренне не могу придумать стандартный способ сделать это. – imbalind

1

Мне удалось заставить его работать, хотя, если бы у меня было время, я бы сделал это немного лучше, чем то, что я сделал, фактически создав ветвь кода и выполнив его правильно, но учитывая временные ограничения, что я У меня работа хорошо.

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(); 
       } 
      } 
+0

Спасибо, что поделились этим, он оказался очень полезным в попытке реализовать мой собственный проект подсети сетки ui-grid. –

+0

Одна вещь, которая может быть улучшена в приведенном выше коде, - это использование вложенных таблиц, чтобы заголовок таблицы родительского устройства не нуждался в повторении. Не было очевидно, что у pdfmake были такие возможности, поэтому я разместил информацию об этом здесь: http://stackoverflow.com/questions/39454842/nested-sub-tables-with-pdfmake –

 Смежные вопросы

  • Нет связанных вопросов^_^