如何以编程方式在每一行中创建具有不同单元格数的表?

时间:2011-12-19 19:34:56

标签: c# asp.net

我是一名新的ASP.NET开发人员。我需要在每行中创建一个包含不同数量单元格的表,那么如何在C#中执行此操作?

我搜索了它,但我无法找到有关此问题的明确有用资源。

2 个答案:

答案 0 :(得分:1)

以下是我在其中一个项目中所做的事情:

private void AddBalancingLine(String balDescription, Decimal balAmount)
{
    TableRow tr = new TableRow();
    tr.Height = Unit.Pixel(17);
    tblDetailLines.Rows.Add(tr);

    tr.Cells.Add(newCell(""));
    tr.Cells.Add(newCell(""));
    tr.Cells.Add(newCell(""));
    tr.Cells.Add(newCell(balDescription, HorizontalAlign.Left, "normalFont", 8));
    tr.Cells.Add(newCell(nullAmount(balAmount), HorizontalAlign.Right, "normalFont", 2));
}

tblDetailLines是要添加行的System.Web.UI.WebControls.TablenewCell函数重载了多个签名,具体取决于您要如何创建单元格:

private TableCell newCell(String cellText)
{
    return newCell(cellText, HorizontalAlign.Right, "normalFont");
}

private TableCell newCell(String cellText, HorizontalAlign alignment, String cssClass)
{
    return newCell(cellText, alignment, cssClass, 1);
}

private TableCell newCell(String cellText, HorizontalAlign alignment, String cssClass, Int32 colSpan)
{
    TableCell tc = new TableCell();
    tc.Text = cellText;
    tc.HorizontalAlign = alignment;
    tc.VerticalAlign = VerticalAlign.Top;
    tc.CssClass = cssClass;
    tc.ColumnSpan = colSpan;
    return tc;
}

最后一个newCell方法是在main函数中最后两次调用tr.Cells.Add时使用的方法 - 这个方法允许您为单元格指定ColumnSpan。该表有13列:

  • 3 blank
  • 1跨越8列(描述)
  • 1跨越2列 (量)

总计13列。

在创建不同的行时调整colSpan参数以获得不同的布局。

(对于非常敏锐的人来说,nullAmount函数会格式化余额金额,从而抑制0金额。)

答案 1 :(得分:0)

你可以为你的单元格指定colspan,我写了一个小例子来向你展示如何获得一个包含2行的表,第一行包含2个单元格,第二个包含4个单元格:

    Dim table As new Table 'Here is your table defined in markup, i declared to show an example
Dim row1 As new tablerow
Dim row2 As new tablerow
Dim cel1 As new TableCell With {.Text="row1 cel 1"}
Dim cel2 As new TableCell With {.Text="row1 cel 2"}
Dim cel3 As new TableCell With {.Text="row2 cel 1"}
Dim cel4 As new TableCell With {.Text="row2 cel 2"}
Dim cel5 As new TableCell With {.Text="row2 cel 3"}
Dim cel6 As new TableCell With {.Text="row2 cel 4"}

cel1.ColumnSpan=2
cel2.ColumnSpan=2
row1.Cells.AddRange({cel1,cel2})
row2.Cells.AddRange({cel3,cel4,cel5,cel6})
table.Rows.AddRange({row1,row2})