Each table row has a property called TableSection. If you set it to TableRowSection.TableHeader, TableBody or TableFooter, the specific tags will be created. Let me show a quick example of creating a THEAD element in a gridview:
gridView.HeaderRow.TableSection=TableRowSection.TableHeader;
And that's it. This kind of behaviour works for the Table WebControl and everything that derives from it or uses it to render itself.
However, the rendering of these elements inside the Table control is done simply with writer.RenderBeginTag(HtmlTextWriterTag.Thead), which gives no one the ability to change from .NET code the attributes of those sections. You can't have it all! You can use CSS, though. ex:
.tableClass thead {
position:relative;
}
10 comments:
Tank you much!
You saved me alot of time
Make sure you set this after data has been bound.
i.e.
void grid_DataBound(object sender, EventArgs e)
{
grid.HeaderRow.TableSection = TableRowSection.TableHeader;
}
well, yes, best option is at prerender, I think.
Thank you. This was exactly what I was looking for!
Siderite, thanks for the good work - it was very helpful. however, i'm having issues setting the TableSection for the Rows (to generate TBODY. Can you please post the syntax for that?
foreach (GridViewRow row in grid.Rows) row.TableSection=TableRowSection.TableBody;
Brilliant. Thank you very much!
Solution is described at my blog at http://nmarian.blogspot.com/2007/08/aspnet-datagrid-rendered-with-thead.html
Hey that code doesn't work for datagrid.
although
Gatagrid.UseAccessibleHeader = True
renders th tags for header columns
unfortunetly not thead tag
Who uses a DataGrid anymore? Isn't that .Net 1.1? The post does say NET2.0 table based controls.
Post a Comment