7

Can anyone tell me how to dynamically create thead tbody tags in my c# code?

private void MakeTable()
{
    Table tb = new Table();
    TableRow tr = new TableRow();
    TableCell td = new TableCell();
    td.Text="hello world";
    tr.Cells.Add(td);
    tb.Rows.Add(tr);
}

Thanks

Jagd
  • 7,169
  • 22
  • 74
  • 107
Praesagus
  • 2,029
  • 5
  • 30
  • 48

3 Answers3

21

Here a sample code that creates a THead, TBody and TFooter.

You can basically always use the TableRow object just reset the TableSection property.

    Table table = new System.Web.UI.WebControls.Table();
    TableRow tableRow;
    TableCell tableCell;

    tableRow = new TableRow();
    tableRow.TableSection = TableRowSection.TableHeader;
    tableCell = new TableCell();
    tableCell.Text = "HEADER";
    tableRow.Cells.Add(tableCell);
    table.Rows.Add(tableRow);

    tableRow = new TableRow();
    tableRow.TableSection = TableRowSection.TableBody;
    tableCell = new TableCell();
    tableCell.Text = "BODY";
    tableRow.Cells.Add(tableCell);
    table.Rows.Add(tableRow);

    tableRow = new TableRow();
    tableRow.TableSection = TableRowSection.TableFooter;
    tableCell = new TableCell();
    tableCell.Text = "FOOTER";
    tableRow.Cells.Add(tableCell);
    table.Rows.Add(tableRow);

    plhTest.Controls.Add(table);

Although I would suggest building the table in direct html and appending to page.

  • 1
    Any specific reasons why you would suggest that ("building the table in direct html and appending to page") ? – Jayesh Sep 26 '11 at 12:58
  • If you have to generate this dynamically (say, for unknown # of columns or other reasons) I found that the TableHeader will not render as `thead` UNLESS the TableFooter has been added (the footer can have no cells, but it must be added to the row collection). grrrr. – Michael Paulukonis Aug 10 '12 at 15:46
  • 1
    Be careful to add the TableHeaderRow via the Rows property of the table and NOT the controls property. Adding via the Controls property will _sometimes_ mean the thead element is not rendered to html. – Bucket Jun 29 '15 at 13:03
7

TableRow is basically tbody.

To make a thead section, use the TableHeaderRow class instead of a TableRow class.

(There is also, btw, TableFooterRow if you want to implement tfoot.

Reed Copsey
  • 554,122
  • 78
  • 1,158
  • 1,373
0
var row = new TableHeaderRow() { TableSection = TableRowSection.TableHeader };
table.Rows.Add(row);

should do the trick

slee
  • 344
  • 3
  • 5
  • 15