MigraDoc - вложенные / вложенные таблицы?

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

Кроме того, я могу объединить некоторые ячейки, но я не могу найти образец на веб-сайте 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

1 ответ

Решение

Пример счета-фактуры использует слияние:
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);

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

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

Другие вопросы по тегам