我有一个固定单元格为2的表格。我想根据条件隐藏表格单元格的可见性。我的病情是
PdfPTable table1 = new PdfPTable(2);
table1.SetTotalWidth(new float[] { 200f, 100f});
table1.TotalWidth = 800f;//table size
foreach (GridViewRow row in grdtimetable.Rows)
{
Label lblday = (Label)row.FindControl("lbltopicvalue");
Label lblperiod1 = (Label)row.FindControl("lblperiod1");
table1.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
table1.AddCell(new Phrase("Days", time550));
if(lblperiod1 .Text!="NULL"||lblperiod1 .Text!="")
{
table1.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
table1.AddCell(new Phrase(""+lblperiod1 .text+"", time550));
}
else
{
//Here I want to make this cell visibility hidden
}
}
有可能吗?如果是的话,请帮助我
答案 0 :(得分:4)
有几种方法可以做到这一点。我将举几例说明。
如果你想保持其他表格单元格的位置相同,即不将它们移到左边,你可以简单地添加空单元格:
doc.Add(new Paragraph("Option 1:"));
PdfPTable table = new PdfPTable(5);
table.SpacingBefore = 10;
for (int i = 1; i <= 5; i++)
{
if (i == 2 || i == 3)
{
// Add an empty cell
PdfPCell empty = new PdfPCell();
empty.Border = PdfPCell.NO_BORDER;
table.AddCell(empty);
}
else
{
table.AddCell(new PdfPCell(new Phrase("Cell " + i)));
}
}
doc.Add(table);
如果您确实想要将单元格向左移动,但保留列宽,则可以在行的末尾添加空单元格。如果您希望对具有不同空单元数的多个表具有相同的表布局,则此选项非常有用。
(您可以通过调整表格宽度来获得相同的结果,而不是添加空单元格,但这会涉及更多计算。)
doc.Add(new Paragraph("Option 2:"));
PdfPTable table2 = new PdfPTable(5);
table2.SpacingBefore = 10;
int emptycells = 0;
for (int i = 1; i <= 5; i++)
{
if (i == 2 || i == 3)
{
// Count the number of empty cells
emptycells++;
}
else
{
table2.AddCell(new PdfPCell(new Phrase("Cell " + i)));
}
}
// Add all empty cells at the end
for (int i = 0; i < emptycells; i++)
{
PdfPCell empty2 = new PdfPCell();
empty2.Border = PdfPCell.NO_BORDER;
table2.AddCell(empty2);
}
doc.Add(table2);
最后,如果您只是确定将有多少个空单元格,那么在创建表格之前,您可以调整表格中的列数。
(同样,您可以调整表格宽度,以获得与上一个选项类似的结果。)
doc.Add(new Paragraph("Option 3:"));
// Determine the number of empty cells before hand
int emptycellsCounted = 2;
PdfPTable table3 = new PdfPTable(5 - emptycellsCounted);
table3.SpacingBefore = 10;
for (int i = 1; i <= 5; i++)
{
if (i == 2 || i == 3)
{
// Do nothing
}
else
{
table3.AddCell(new PdfPCell(new Phrase("Cell " + i)));
}
}
doc.Add(table3);
doc.Close();
你说还有一个额外的限制:如果一个单元格为空,则所有后续单元格也将为空。在这种情况下,选项1和2是相同的。
3个代码示例的结果: