Подтвердить что ты не робот

Как создать thead и tbody в таблице ASP.NET?

Как создать thead и tbody в таблице ASP.NET? Мне нужны эти теги из-за jquery и asp.net дает мне только tr, th и td.

4b9b3361

Ответ 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.