Štandartne sa
DataGrid renderuje tagmi
<table>,
<tr> a
<td>. Pre zjednodušenie štýlovania tabuľky pomocu CSS je vhodné okrem spomínaných tagov renderovať aj tágy
<thead>,
<tbody>,
<th> a podobne. Na riešenie tohto problému som vytvoril vlastný
DataGrid odvodený od
System.Web.UI.WebControls.DataGrid pričom v prekrytej metóde
OnPreRender sú vykonané všetky potrebné úpravy:
1: using System;
2: using System.Reflection;
3: using System.Web.UI;
4: using System.Web.UI.WebControls;
5:
6: namespace NMarian.Controls
7: { 8: public class DataGrid : System.Web.UI.WebControls.DataGrid
9: { 10: protected override void OnPreRender(EventArgs e)
11: { 12: Table table = Controls[0] as Table;
13:
14: if (table != null && table.Rows.Count > 0)
15: { 16: table.Rows[0].TableSection = TableRowSection.TableHeader;
17: table.Rows[table.Rows.Count - 1].TableSection = TableRowSection.TableFooter;
18:
19: FieldInfo field = typeof(WebControl).GetField("tagKey", BindingFlags.Instance | BindingFlags.NonPublic); 20:
21: foreach (TableCell cell in table.Rows[0].Cells)
22: { 23: field.SetValue(cell, HtmlTextWriterTag.Th);
24: }
25: }
26:
27: base.OnPreRender(e);
28: }
29: }
30: }