2010-01-12 27 views
6

Estoy trabajando con C# ASP .Net, HtmlTable, HtmlTableRow, HtmlTableCell para crear una tabla.HtmlTable, HtmlTableRow, HtmlTableCell - crear thead, tbody y tfoot

por ejemplo ... tengo que tener algunas células para ser envuelto por <tfoot> and </tfoot>

he intentado hacerlo con HtmlGenericControl para envolver estas células con la etiqueta "tfoot" al HtmlTable pero no funcionó .

sé que HtmlTableCell puede tener en el constructor "th" para "thead" y "td" para tbody. pero necesito que se envuelvan con el "thead" y el "tbody" real.

¿Alguna sugerencia?

Respuesta

20

Así es como (abajo). Todas las clases utilizadas están en System.Web.UI.HtmlControls.

TableRow row = new TableHeaderRow(); 
     TableRow row2 = new TableRow(); 
     TableRow row3 = new TableFooterRow(); 
     Table table = new Table(); 

     var cell1 = new TableCell(); 
     row.TableSection = TableRowSection.TableHeader; 
     cell1.Text = "Header"; 
     row.Cells.Add(cell1); 

     var cell2 = new TableCell(); 
     cell2.Text = "Contents"; 
     row2.Cells.Add(cell2); 

     var cell3 = new TableCell(); 
     cell3.Text = "Footer"; 
     row3.Cells.Add(cell3); 
     row3.TableSection = TableRowSection.TableFooter; 


     table.Rows.Add(row); 
     table.Rows.Add(row2); 
     table.Rows.Add(row3); 
     this.Controls.Add(table); 
+0

muy muy bueno. me ayuda pero lo hacen solo para encabezado ... no hay TableFooterCell ... – Jack

+1

No es necesario. Solo hace que el valor de TableSection de la fila sea 'TableFooter'. Estas son las clases que usa Gridview. –

+1

Tenga en cuenta que el orden es thead ?, tfoot ?, tbody +. El pie de página no viene al final. – brianary

4

No se ve bien, me temo. Esto desde http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmltable%28VS.80%29.aspx

Nota

no es compatible con un modelo de tabla compleja. No puede tener un control HtmlTable con título anidado <>, < col>, < colgroup>, < tbody>, < thead>, o < tfoot> elementos. Estos elementos se eliminan sin previo aviso y no aparecen en el HTML de salida. Se lanzará una excepción si intenta agregar programáticamente estos elementos de modelo de tabla a la colección Control.Controls del control HtmlTable.

Old school html es el camino, entonces.

+0

muchas gracias! – Jack

0

GraphicDivine tiene la respuesta correcta, que la funcionalidad no está disponible para construir la tabla mediante programación utilizando htmlcontrols. Podrías construirlo en el marcado con etiquetas html y agregar el servidor runat donde sea necesario o construirlo programáticamente usando los controles web. como la tabla, TableRow etc ...

1

Puede utilizar

HtmlGenericControl table = new HtmlGenericControl("table"); 

en lugar de

HtmlTable table = new HtmlTable(); 
Cuestiones relacionadas