【问题标题】:HtmlTable, HtmlTableRow, HtmlTableCell - creating thead, tbody and tfootHtmlTable、HtmlTableRow、HtmlTableCell - 创建thead、tbody和tfoot
【发布时间】:2010-01-12 20:10:48
【问题描述】:

我正在使用 c# ASP .Net、HtmlTable、HtmlTableRow、HtmlTableCell 来创建表格。

例如...我需要一些单元格被<tfoot> and </tfoot>包裹

我尝试使用 HtmlGenericControl 将这些带有标签“tfoot”的单元格包装到 HtmlTable 但它不起作用。

我知道 HtmlTableCell 可以在构造函数中包含“thead”的“th”和 tbody 的“td”。 但我需要用实际的“thead”和“tbody”包裹它们。

有什么建议吗??

【问题讨论】:

    标签: c# html


    【解决方案1】:

    这里是如何(下)。使用的所有类都在 System.Web.UI.WebControls 中。

            TableRow headerRow = new TableHeaderRow();
            TableRow row2 = new TableRow();
            TableRow row3 = new TableFooterRow();
            Table table = new Table();
    
            var cell1 = new TableCell();
            headerRow.TableSection = TableRowSection.TableHeader;
            cell1.Text = "Header";
            headerRow.Cells.Add(cell1);
    
            var cell2 = new TableCell();
            cell2.Text = "Contents";
            row2.Cells.Add(cell2);
    
            var cell3 = new TableCell();
            cell3.Text = "Footer";
            row3.Cells.Add(cell3);
            row3.TableSection = TableRowSection.TableFooter;
    
    
            table.Rows.Add(headerRow);
            table.Rows.Add(row2);
            table.Rows.Add(row3);
            this.Controls.Add(table);
    

    【讨论】:

    • 非常非常好。它对我有帮助。但他们只为标题...没有 TableFooterCell...
    • 没有必要。您只需将行的 TableSection 值设为“TableFooter”。这些是 Gridview 使用的类。
    • 记住顺序是thead?, tfoot?, tbody+。页脚没有出现在末尾。
    • 如何在单元格中拥有 thead 和 tbody 并使用 HTML 代码?
    • 上面的代码对我不起作用。 <thead> 部分中的标签始终是 <td> 而不是 <th>。这让我发疯了......直到我为 TableHeader 中的单元格找到New TableHeaderCell()。现在它可以正常渲染了!
    【解决方案2】:

    恐怕不好看。来自http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmltable%28VS.80%29.aspx

    注意

    不支持复杂的表模型。您不能有一个带有嵌套

    、 、、 、 或 元素的 HtmlTable 控件。这些元素会在没有警告的情况下被删除,并且不会出现在输出 HTML 中。如果您尝试以编程方式将这些表格模型元素添加到 HtmlTable 控件的 Control.Controls 集合中,则会引发异常。

    那么,老派 html 是一种方式。

    【讨论】:

      【解决方案3】:

      你可以使用

      HtmlGenericControl table = new HtmlGenericControl("table");
      

      而不是

      HtmlTable table = new HtmlTable();
      

      【讨论】:

        【解决方案4】:

        graphicdivine 有正确的响应,该功能无法使用 html 控件以编程方式构建表格。您可以使用 html 标签在标记中构建它,并在需要的地方添加 runat 服务器,或者您可以使用 web 控件以编程方式构建它。像 Table、TableRow 等...

        【讨论】: