DevTrain

Autor: Tobi Ulm

Listendarstellung mit Templates

 Was Sie in diesem Modul lernen:

-          Templates zu erzeugen

-          Das ADO.NET DataSet zu verwenden

Was Sie an Wissen mitbringen sollten:

-          Kenntnisse in ASP.NET

-          Kenntnisse in C#

ADO.NET besteht aus folgenden Komponenten: Connection, Command, DataReader und dem DataSetCommand. Am meisten wird in ASP.NET Seiten das WebControl DataGrid verwendet um Daten anzeigen zu lassen. Das DataGrid Control ist ja ganz nett und bietet einige Features, welche so mancher ASP Entwickler mit dem ASP DTC DataGrid vermisst hat. Jedoch sind Entwickler je nach Projekt angewiesen eine "Customized" Darstellung der Daten anzubieten. Deswegen bietet ASP.NET zwei weitere Controls, das DataList Control und den Repeater. Diese Controls besitzen von Haus aus keine Formatierungseinstellungen, sondern werden über sogenannte Templates eingestellt, die den Kompiler anweisen wie er die Daten auf einer WebPage darstellen soll. Templates sind also in ASP.NET eine einfache und tolle Möglichkeit Daten zu visualisieren und zu formatieren. Dabei wird eine Art Liste erzeugt die in unserem Beispiel mit einem DataSet gefüllt wird. Die drei wichtigsten Templates sind: HeaderTemplate, ItemTemplate und das  FooterTemplate. Folgende Templates gibt es ausserdem:

-         AlternatingItemTemplate

-         SelectedItemTemplate

-         EditItemTemplate

Templates könne aber nur mit folgenden WebControls benutzt werden:

            -         Repeater

-         DataList

-         DataGrid

            -    Pager

 OK. soweit zum HardCore Theorie Teil, jetzt der mehr oder weniger praktische Nutzen. Als altererstes muss ich da es sich um Daten aus einer DatenBank handelt arbeiten wir nun ADO.NET:

 DataSet dsCustomers = new DataSet();

SQLConnectionconnSQL=newSQLConnection("server=localhost;uid=sa;pwd=;database=northwind");

SQLDataSetCommand sqlcmdCustomers = new SQLDataSetCommand("SELECT * FROM Customers", connSQL);

sqlcmdCustomers.FillDataSet(dsCustomers, "Customers");

CustomerListe.DataSource = dsCustomers.Tables("Customers").DefaultView;

CustomerListe.DataBind(); 

 Dieser Quellcode sollte den meisten inzwischen bekannt sein. Ich erzeuge eine managed Provider SQLConnection(connSQL), anschliessend ein SQLDataSetCommand (sqlcmdCustomers) und noch ein DataSet(dsCustomers). Ich binde dann die Daten des DataSets an meinen Repeater(CustomerListe). Soweit zum Teil: wie bringe ich meine Daten auf die WebPage. Nun werden wir uns um die Templates kümmern die die Formatierung der Daten vornehmen.

 <asp:repeater id="CustomerListe" runat="Server">

                  <template name="HeaderTemplate">

                           <table>

                                    <tr>

                                             <th>CustomerID</th>

                                             <th>CompanyName</th>

                                             <th>ContactName</th>

                                    </tr>

                          

                  </template>

                  <template name="ItemTemplate">

                           <tr>

                                    <td><%# DataBinder.Eval(Container.DataItem, "CustomerID")%></td>

                                    <td><%# DataBinder.Eval(Container.DataItem, "CompanyName")%></td>

                                    <td><%# DataBinder.Eval(Container.DataItem, "ContactName")%></td>

                           </tr>

                  </template>

                  <template name="FooterTemplate">

                           </table>

                 </template>

 </asp:repeater>

Ich verwende zur eigentlichen Ausgabe einen asp:Repeater.

Innerhalb dieses Repeaters erzeuge ich die drei oben gennanten Templates.

HeaderTemplate:

 -Template für die Überschriften meiner Tabelle

ItemTemplate:

- Dieses Template wird benutzt um die einzelnen DatenFelder zu formatieren.

Ich erzeuge ein HTML TableRow und HTML TableData Zellen die ich dann mit Daten befülle.

Zu guter letzt baue ich noch einen

FooterTemplate:

- Dieser schliesst einfach die Tabelle. Sie können hier, genauso wie im HeaderTemplate, Includes machen um z.B.: Menustrukturen reinzuladen.


Erfasst am: 04.05.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=440
© Copyright 2003 ppedv AG - http://www.ppedv.de