2010-10-25 19 views

Respuesta

24

asp:Table no es compatible con estos elementos.

Actualización: Comojameh's answer revela, la frase anterior es totalmente erróneo: la propiedad TableSection permite controlar si una fila dada entra en cabecera, cuerpo o pie de página de la tabla.

Para más detalles sobre su respuesta, parece incluso se puede lograr esto mediante declaración estableciendo la propiedad TableSection en su margen de beneficio, sin código detrás:

<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> 

original, ahora discutible la respuesta sigue:

Usted podría NT para probar la clase HtmlTable lugar: Respuesta

<table id="yourId" runat="server"> 
    <thead> 
     . 
     . 
     . 
    </thead> 
    <tbody> 
     . 
     . 
     . 
    </tbody> 
</table> 
+0

¿De qué sirve este Asp: Table? ¿Puedo crear HtmlTable programáticamente con el código C#? – Primoz

+1

Sí, [puede] (http://msdn.microsoft.com/en-us/library/wwhe0at8%28v=VS.80%29.aspx), incluso si la sintaxis es probablemente menos clara. –

+1

Por curiosidad, ¿de qué sirve este Asp: Table? – Primoz

18

de Frédéric no es exacta. asp: La tabla REALMENTE admite etiquetas <tbody> y <thead>, pero de forma menos obvia que HtmlTable.

UseAccessibleHeader es cierto por defecto para las tablas, lo que significa que sus filas de cabecera se representará correctamente con <th> en lugar de <td>, pero para obtener el <tbody> y <thead> etiquetas, sólo tienes que establecer algún vudú en Load y cuando está creando/insertando sus filas en el código subyacente.

Aquí está mi ejemplo asp: etiquetado de la tabla:

<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> 

En Page_Load, especificamos que nuestra TableHeaderRow1 debe ser un TableHeader:

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

Y, por último, en su función que inserta filas en dicho tabla, solo tiene que especificar que TableRowSection de cada fila que agregue es un 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 

Puede leer más en el TableRowSection property; parece que también puede lograr esto con su asp: plantilla de tabla.

+0

Tienes razón, soy corregido. Como no pude eliminar mi respuesta a favor de los suyos (las respuestas aceptadas no se pueden eliminar), la corrigí con la información que me proporcionó. Espero que no te moleste :) –

+2

No hay problema, siempre feliz de compartir información sobre el críptico mundo de ASP.NET. ;-) – jfsaliba

+1

¿Es posible crear múltiples entidades dinámicamente? – user1

Cuestiones relacionadas