如何在ASP.NET表中创建thead和tbody?

Pri*_*moz 22 asp.net jquery html-table

如何在ASP.NET表中创建thead和tbody?我需要那些标签,因为jquery和asp.net只给我tr,th和td.

Fré*_*idi 29

asp:Table不支持这些元素.

更新:正如jameh的回答所揭示的,上面的句子是完全错误的:TableSection属性允许控制给定行是否进入表的标题,正文或页脚.

要详细说明他的答案,似乎你甚至可以通过TableSection在标记中设置属性来声明性地实现这一点,而不需要代码:

<asp:Table id="yourId" runat="server">
    <asp:TableHeaderRow TableSection="TableHeader">
        <!-- ... -->
    </asp:TableHeaderRow>
    <asp:TableRow>
        <!-- 'TableSection' defaults to 'TableRowSection.TableBody'. -->
        <!-- ... -->
    </asp:TableRow>
    <asp:TableRow TableSection="TableFooter">
        <!-- ... -->
    </asp:TableRow>
</asp:Table>
Run Code Online (Sandbox Code Playgroud)

原创,现在没有问题的答案如下:

您可能希望尝试使用HtmlTable类:

<table id="yourId" runat="server">
    <thead>
        .
        .
        .
    </thead>
    <tbody>
        .
        .
        .
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

  • 阅读jameh的回答.这可以用asp:Table (2认同)

jfs*_*iba 20

弗雷德里克的答案并不准确.asp:Table事实上支持<tbody><thead>标签,但是比HtmlTable更不明显.

默认情况下,对于表,UseAccessibleHeader为true,这意味着您的标题行将正确呈现<th>而不是<td>,但要获取<tbody><thead>标记,您只需在Page_Load设置一些伏都教,并在创建/插入行时代码隐藏.

这是我的示例asp:表标记:

<asp:Table runat="server" ID="tblGeneral">
    <asp:TableHeaderRow ID="TableHeaderRow1" runat="server">
        <asp:TableHeaderCell ID="TableHeaderCell1" runat="server">Column 1</asp:TableHeaderCell>
        <asp:TableHeaderCell ID="TableHeaderCell2" runat="server">Column 2</asp:TableHeaderCell>
        <asp:TableHeaderCell ID="TableHeaderCell3" runat="server">Column 3</asp:TableHeaderCell>
        <asp:TableHeaderCell ID="TableHeaderCell4" runat="server">Column 4</asp:TableHeaderCell>
        <asp:TableHeaderCell ID="TableHeaderCell5" runat="server">Column 5</asp:TableHeaderCell>
    </asp:TableHeaderRow>
</asp:Table>
Run Code Online (Sandbox Code Playgroud)

在Page_Load中,我们指定TableHeaderRow1应该是TableHeader:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    TableHeaderRow1.TableSection = TableRowSection.TableHeader      
End Sub
Run Code Online (Sandbox Code Playgroud)

最后,在将行插入到表中的函数中,您只需指定您添加的每行的TableRowSection是TableBody:

Dim row As TableRow
Dim dvRow As Data.DataRowView

For Each dvRow In dv
    row = New TableRow
    row.TableSection = TableRowSection.TableBody 'THIS is the important bit
    cell = New TableCell
    Col1Stuff = New Label
    Col1Stuff.Text = "Blah"
    cell.Controls.Add(Col1Stuff)
    row.Cells.Add(cell)

    ...

tblGeneral.Rows.Add(row)
Next
Run Code Online (Sandbox Code Playgroud)

您可以在TableRowSection属性上进行更多阅读; 看起来你也可以用你的asp:Table模板完成这个.

  • 没问题,总是很乐意分享对神秘的ASP.NET世界的洞察力.;-) (3认同)