2016-03-30 2 views
2

Я хотел бы добавить таблицу внутри другой таблицы (внутри определенной ячейки). Я не могу найти способ добавить объект Table к объекту Cell. Это просто невозможно?MigraDoc - неотъемлемые/вложенные таблицы?

В качестве альтернативы, я могу объединить некоторые ячейки, но я не могу найти какой-либо образец на веб-сайте MigraDoc с слиянием ячеек.

Вот мой код:

Table parentTable = new Table(); 
parentTable.AddColumn(Unit.FromCentimeter(9)); 
Row parentRow = parentTable.AddRow(); 
Cell parentCell = parentRow.Cells[0]; 

Table currentTable = new Table(); 
currentTable.AddColumn(Unit.FromCentimeter(4)); 
Row currentRow = currentTable.AddRow(); 
currentRow.Cells[0].AddParagraph("blablabla"); 

parentCell.Add(currentTable); // this does not work 

ответ

6

Образец счета слияние используется:
http://www.pdfsharp.net/wiki/Invoice-sample.ashx

Ключевые слова являются MergeRight и MergeDown. Используйте MergeRight=1, чтобы получить ячейку, которая охватывает две колонки.

Я думаю, что слияние - лучший подход, если он не становится слишком сложным.

Вы можете добавить TextFrame к Cell и добавить Table к TextFrame для достижения вложенных таблиц. Однако вам придется иметь дело с высотой строки, поскольку ячейка таблицы не будет расти автоматически, когда содержимое TextFrame будет расти.

Есть хитрость, чтобы добавить Table в Cell или Paragraph в ячейку, используя общий метод Add. код хак, который добавляет таблицу в ячейку таблицы:

parentCell.Elements.Add(currentTable); 

Это недокументированная функция. Рекомендуемый подход - слияние.

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

+0

Он отлично работает. Работает также с TextFrame. Спасибо за это и ссылку на образец счета! – olivier

+0

+1 для трюка «Элементы». Было бы неплохо иметь сокращение .AddTable() в ячейках, чтобы предотвратить путаницу – Farlop

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