By default
DataGrid
is rendered with tags
<table>
,
<tr>
and
<td>
. To make styling with CSS easier it would also suitable to render also tags
<thead>
,
<tbody>
,
<th>
etc. To solve this problem I created custom
DataGrid
derived from
System.Web.UI.WebControls.DataGrid
, where in overriden method
OnPreRender
are realized modifications:
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: }
1 komentár:
Excelent answer... I'm from Perú, and your code aid me a lot!!.
Thank you so much.
Zverejnenie komentára