DevTrain

Autor: Hannes Preishuber

ASP.NET Das DataGrid Teil 1

Sie lernen in diesem Artikel:
 - wie sie Daten mit dem DataGrid Control visualisieren

Vorraussetzung sind Kenntnisse in ADO.NET.

Das DataGrid Server Control bietet die Möglichkeit tabellarisch Daten zu visualisieren. Des weiteren bietet das DataGrid die Möglichkeit Selektionen, Sortierungen, und Editieren auf die angezeigten Datensätze anzuwenden.
Wir werden uns beim Befüllen des DataGrids mit ?echten? Daten aus einer SQL Server Datenbank befassen. Sie haben aber generell auf die Möglichkeit ein Array als Daten Quelle für das DataGrid zu verwenden.
Zum Editieren möchte ich auf den nächsten DataGrid Teil 2 verweisen!
Das DataGrid erzeugt für jede Datensatz Spalte eine eigene DataBoundColumn. Spaltennamen der Datensätze werden im DataGrid als Spaltenüberschriften automatisch generiert.

Das DataGrid bietet ausserdem Interressante Eigenschaften, die Grid Columns Collection, womit Sie das Verhalten, die Sortierung und das Erscheinungsbild des Grids programmatisch beeinflussen können.

- Bound Column:
o Verändert das Aussehen und Sortierung der Zeilen
- Hyperlink Column:
o Gibt die gebunden Daten als Hyperlink aus
- Button Column:
o Erzeugt in einer Spalte ein Control, das Sie mit benutzerdefinierte Funktionen auslösen können.
- Template Column:
o Gibt Ihnen die Möglickeit die anzuzeigenden Daten zu filtern und anzugeben welche Controls gerendert werden sollen.
- Edit Command Column:
o Edit, Update und Cancel links werden hinzugefügt um das Editieren eines Datensatzes zu ermöglichen, wobei dies in enger Verbindung mit der DataGrid Eigenschaft EditItemIndex steht.

Die ersteren Drei Fälle werde ich mit diesem Artikel abdecken. Die Edit Command Coloumn werde ich im oben genannten Artikel näher beschreiben.

Die Daten beziehe ich, wie kann es anders sein aus der geliebten Northwind Datenbank per ADO.NET.

Bound Column:

Wenn Sie nur bestimmte Datensätze aus der Datenquelle anzeigen wollen, müssen Sie in den Eigenschaften des DataGrids die Eigenschaft AutoGenerateColumns="false" setzen, denn ansonsten werden alle Datensätze und Zeilen automatisch gerendert.
Haben Sie die AutoGenerateColumns Eigenschaft deaktiviert müssen Sie die einzelnen Spalten dem DataGrid bekannt geben um sie visualieren.
Das machen Sie am besten mit der DataGrid Collection Columns, die für das DataGrid die Daten Spalten sammelt.
Dann geben müssen Sie noch die BoundColumn Elemente angeben, also die Spalten die gerendert werden sollen:

<property name="Columns">
            <asp:BoundColumn HeaderText="KundenNummer" DataField="CustomerID" />

HyperLink Column:

Ich führe das Beispiel von oben fort und baue lediglich in die Columns Collection das <asp:HyperLinkColumn />Element ein. Dabei sollte erwähnt weden, dass dieses Element eine Vielzahl von Attributen mit sich bringt die den Rahmen dieses Skripts sprengt. Wer genauere Info?s will soll im .NET Framework SDK unter HyperLinkColumn Members nachsehen.
Mein Quellcode :

            <asp:HyperLinkColumn
                HeaderText="HyperLinkColumn"
                DataNavigateUrlField="ContactName"
  DataNavigateUrlFormatString="details.aspx?id={0}"
                DataTextField="ContactName"
                Target="_new"
            />
Wobei HeaderText für die Spaltenüberschrift, DataNavigateUrlField als Datenquellen Spalte für den Indexer , DataNavigateUrlFormatString als Umformatierung mit Indexer für die benutzerdefinierte Zieladresse, DataTextField für den anzuzeigenden Text aus der jeweiligen DatenSatz Spalte und Target für das jeweilige Browser Objekt steht.

Button Column:

Mit dem Column Element ButtonColumn sind Sie in der Lage dem Grid Spalten hinzuzufügen in denen Steuerelemente mit eigenen Funktionen enthalten sind. In meinem Beispiel wird eine Spalte Button Column hinzugefügt und für jede Datensatz Zeile ein Element mit dem Namen Command. Im Grid Element selbst setze ich das Attribut OnItemCommand auf den Wert ?MyFunction? der meine eigene Funktion darstellt. In dieser frage ich über die EventArgumente des Grids den Namen des Commandos ab(SayHallo), das ich in derm ButtonColumn Element der Columns Auflistung hinzugefügt habe. Den Rest können Sie sich, glaube ich selbst erklären. ;-)
<asp:ButtonColumn HeaderText="Button Column" Text="Command" CommandName="SayHallo" />

Template Column:
Mit dem TemplateColumn Element haben Sie die totale Kontrolle über den Inhalt einer Grid Zelle. Auch hier erweitere ich mein Anfangsbeispiel um eine weitere Spalte, in diesem Fall um eine Template Spalte mit zwei <asp:LinkButton/> Steuerelementen. Ich füge der Columns Auflistung ein <asp:TemplateColumn/> hinzu. Wichtig dabei ist hier zu erwähnen das es genauso wie bei der HyperLink Column eine Menge an Attributen, bzw. UnterElemente gibt. Infos im SDK unter ?TemplateColumn Members?.
Ausserdem sind die Templates ähnlich von der Handhabung wie die WebForm Templates. Ich habe für die Formatierung z.B.: Elemente für die Kopfzeile, Fusszeile usw.

<template name="ItemTemplate">
                    <asp:LinkButton ID=Item1 Text="Item1" CommandName="Item1" ForeColor="blue" runat="server" />&nbsp;
                    <asp:LinkButton ID=Item2 Text="Item2" CommandName="Item2" ForeColor="blue" runat="server" />
                </template>


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