Как создать thead и tbody в таблице ASP.NET? Мне нужны эти теги из-за jquery и asp.net дает мне только tr, th и td.
Как создать thead и tbody в таблице ASP.NET?
Ответ 1
asp: Таблица не поддерживает эти элементы.
Обновление: Как jameh 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>
Ответ 2
Ответ Фредерика неверен. asp: Таблица фактически поддерживает теги <tbody>
и <thead>
, но менее очевидным образом, чем HtmlTable.
UseAccessibleHeader по умолчанию используется для таблиц, что означает, что ваши строки заголовков будут правильно отображаться с помощью <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; похоже, вы также можете выполнить это с помощью шаблона asp: Table.