【发布时间】:2011-04-30 06:33:07
【问题描述】:
如何在ASP.NET Table 中创建thead 和tbody?我需要这些标签,因为 jquery 和 asp.net 只给了我 tr、th 和 td。
【问题讨论】:
标签: jquery asp.net html-table
如何在ASP.NET Table 中创建thead 和tbody?我需要这些标签,因为 jquery 和 asp.net 只给了我 tr、th 和 td。
【问题讨论】:
标签: jquery asp.net html-table
asp:Table 不支持这些元素。
更新: 正如jameh's answer 所揭示的,上面的句子是完全错误的:
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>
原始的,现在没有实际意义的答案如下:
您可能想改用HtmlTable 类:
<table id="yourId" runat="server">
<thead>
.
.
.
</thead>
<tbody>
.
.
.
</tbody>
</table>
【讨论】:
asp:Table 与其他 Web 服务器控件一致。它通常比HtmlTable 更容易开发。见developerfusion.com/article/4410/in-depth-aspnet-using-adonet/3。
Frédéric 的回答并不准确。 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>
在 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
最后,在将行插入所述表的函数中,您只需指定添加的每一行的 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
您可以在TableRowSection property 上进行更多阅读;看起来您也可以使用您的 asp:Table 模板完成此操作。
【讨论】: