A megoldás a HtmlTable, HtmlTableRow, HtmlTableCell osztályokban keresendő. Ezek felhasználásával tetszőleges táblázatot varázsolhatunk programból.
Nézzünk most bevezetésképpen egy egyszerű esetet e három osztály használatára. A feladatunk egy olyan táblázat létrehozása lesz, mely csupán egy sorból és egy oszlopból áll. Ebben az egy cellában pedig elhelyezünk egy feliratot.
Szükségünk lesz egy StringWriter osztályra annak érdekében, hogy a generált táblázat HTML kódjához sztringként hozzáférjünk. Ezen kívül egy HtmlTextWriter osztály is kell, így ebből is létrehozunk egy példányt. Ennek konstruktoránál megadjuk az előbb létrehozott StringWriter példányát.
private void Page_Load(object sender, System.EventArgs e)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
Kezdjük el felépíteni a táblázatot visszafelé: először létrehozunk egy cellát, melyhez a HtmlTableCell osztályt kell használnunk. Ennek InnerText property-jét használva megadhatunk egy tetszőleges sztringet, mely az adott cellában jelenik meg.
HtmlTableCell cell = new HtmlTableCell();
cell.InnerText = "Hello world";
Ha már adott egy cella, akkor ebből készíthetünk egy sort. Ehhez létrehozunk egy HtmlTableRow osztályt, majd ennek Cells property-jében lévő Add függvényt felhasználva hozzáadjuk ehhez a sorhoz a már elkészített cellát.
HtmlTableRow row = new HtmlTableRow();
row.Cells.Add(cell);
Ha már adott egy sor, akkor ebből készíthetünk egy táblázatot. A HtmlTable osztály létrehozásával tesszük ezt. Itt a Rows property Add függvényét használjuk fel arra, hogy egy már elkészített sort hozzáadjunk a táblázathoz.
HtmlTable ht = new HtmlTable();
ht.Rows.Add(row);
A táblázathoz rendeljünk egy stílust: a Style property-n keresztül az Add függvény hívásával tehetjük ezt meg. Itt első paraméterként a stílus nevét, másodikként pedig annak értékét kell megadnunk.
ht.Style.Add("background-color", "aqua");
Végezetül generáltassuk a HTML kódot a RenderControl függvény hívásával. Paraméterként a már létrehozott HtmlTextWriter osztály példányát kell átadnunk.
Végül nem marad más tennivalónk, mint a kész HTML kódot beilleszteni a web oldalunkba, melyet most úgy végzünk el, hogy a web oldalon elhelyezett Label kontrol szövegének adjuk át azt.
Label1.Text = sw.ToString();
}
Ha megnézzük az eredmény HTML kódját, akkor jól látható a fenti lépések eredménye.
<span id="Label1" style="Z-INDEX: 101; LEFT: 64px; POSITION: absolute; TOP: 64px">
<table style="background-color:aqua;">
<tr>
<td>Hello world</td>
</tr>
</table>
</span>