2016-03-30 13 views
2

Başka bir tablonun içine (belirli bir hücrenin içinde) bir tablo eklemek istiyorum. Cell nesnesine Table nesnesini eklemenin bir yolunu bulamıyorum. Bu sadece imkansız mı? Alternatif olarak, bazı hücreleri bir araya getirebilirim, ancak MigraDoc web sitesinde, hücrelerin birleştirilmesiyle herhangi bir örnek bulamıyorum.MigraDoc - iç içe geçmiş/iç içe geçmiş tablolar?

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 

cevap

6

Fatura örnek birleştirme kullanır:
http://www.pdfsharp.net/wiki/Invoice-sample.ashx

anahtar MergeRight ve MergeDown olan

İşte benim kodudur. İki sütun içeren bir hücre almak için MergeRight=1 kullanın.

Çok karmaşıklaşmazsa, birleştirme en iyi yaklaşımdır.

Bir Cell için TextFrame ekleyebilir ve iç içe geçmiş tablolar elde etmek için TableTextFrame bir ekleme yapabilirsiniz. Ancak, TextFrame'in içeriği büyüdüğünde, tablo hücresi otomatik olarak büyümeyeceği için satır yüksekliği ile uğraşmanız gerekecektir.

jenerik Add yöntemi kullanarak bir hücrede bir TableParagraphCell bir veya eklemek için bir hile vardır. Bir tablo hücresine bir tablo ekler Kod kesmek:

parentCell.Elements.Add(currentTable); 

Bu belgesiz özelliktir. Birleştirme önerilen yaklaşımdır.

Hücreler bir sonraki sayfaya bölünmez, bu nedenle hücrelere tablo eklemek yalnızca küçük iç içe geçmiş tablolar için çalışacaktır.

+0

İyi çalışıyor. TextFrame ile de çalışır. Bunun için ve Fatura örneğine bağlantı için teşekkürler! 'Elements' hilesi için – olivier

+0

+1. Karışıklığı önlemek için bir .AddTable() hücresine sahip olmak güzel olurdu – Farlop