net llenar example ejemplos editar como bootstrap asp c# .net asp.net gridview

c# - llenar - ¿Cómo hago que Gridview renderice THEAD?



gridview asp.net c# sql server (7)

¿Cómo obtengo el control GridView para representar las <thead> <tbody> ? Sé .UseAccessibleHeaders lo pone <th> lugar de <td> , pero no puedo hacer que <thead> .


Cree una función y use esa función en su evento PageLoad esta manera:

La función es:

private void MakeGridViewPrinterFriendly(GridView gridView) { if (gridView.Rows.Count > 0) { gridView.UseAccessibleHeader = true; gridView.HeaderRow.TableSection = TableRowSection.TableHeader; } }

El evento PageLoad es:

protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { MakeGridViewPrinterFriendly(grddata); } }


El código en la respuesta debe continuar en Page_Load o GridView_PreRender . Lo puse en un método que se llamó después de Page_Load y obtuve una NullReferenceException .


Esto debería hacerlo:

gv.HeaderRow.TableSection = TableRowSection.TableHeader;


Esto funciona para mí:

protected void GrdPagosRowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.TableSection = TableRowSection.TableBody; } else if (e.Row.RowType == DataControlRowType.Header) { e.Row.TableSection = TableRowSection.TableHeader; } else if (e.Row.RowType == DataControlRowType.Footer) { e.Row.TableSection = TableRowSection.TableFooter; } }

Esto fue probado en VS2010.


Sé que esto es viejo, pero, aquí hay una interpretación de la respuesta de MikeTeeVee, para una vista de cuadrícula estándar:

página aspx:

<asp:GridView ID="GridView1" runat="server" OnPreRender="GridView_PreRender">

aspx.cs:

protected void GridView_PreRender(object sender, EventArgs e) { GridView gv = (GridView)sender; if ((gv.ShowHeader == true && gv.Rows.Count > 0) || (gv.ShowHeaderWhenEmpty == true)) { //Force GridView to use <thead> instead of <tbody> - 11/03/2013 - MCR. gv.HeaderRow.TableSection = TableRowSection.TableHeader; } if (gv.ShowFooter == true && gv.Rows.Count > 0) { //Force GridView to use <tfoot> instead of <tbody> - 11/03/2013 - MCR. gv.FooterRow.TableSection = TableRowSection.TableFooter; } }


Yo uso el siguiente código para hacer esto:

Las declaraciones if que agregué son importantes.

De lo contrario (dependiendo de cómo represente su cuadrícula) arrojará excepciones como:

La tabla debe contener secciones de fila en orden de encabezado, cuerpo y pie de página.

protected override void OnPreRender(EventArgs e) { if ( (this.ShowHeader == true && this.Rows.Count > 0) || (this.ShowHeaderWhenEmpty == true)) { //Force GridView to use <thead> instead of <tbody> - 11/03/2013 - MCR. this.HeaderRow.TableSection = TableRowSection.TableHeader; } if (this.ShowFooter == true && this.Rows.Count > 0) { //Force GridView to use <tfoot> instead of <tbody> - 11/03/2013 - MCR. this.FooterRow.TableSection = TableRowSection.TableFooter; } base.OnPreRender(e); }

El this objeto es mi GridView.

De hecho, superé Asp.net GridView para hacer mi propio control personalizado, pero podría pegarlo en su página aspx.cs y hacer referencia al GridView por nombre en lugar de usar el enfoque de gridview personalizado.

FYI: No he probado la lógica del pie de página, pero sí sé que esto funciona para los encabezados.


Yo uso esto en el evento OnRowDataBound :

if (e.Row.RowType == DataControlRowType.Header) e.Row.TableSection = TableRowSection.TableHeader;