Inhalt
Vorwort
1 Wie .NET und ASP.NET funktionieren
2 Installation
3 Hinweise zu VB.NET
4 »Hallo, Welt!« – Ein ASP.NET-Crashkurs
5 Die Page-Klasse
6 HTML-Serversteuerelemente
7 Validierung von Anwendereingaben
8 Webserversteuerelemente
9 Webserversteuerelemente für die Darstellung von Listen
10 Webserversteuerelemente selbst erstellen
11 Der Status von Seiten, Sitzungen und Applikationen
12 ASP.NET und Datenbanken
13 »Wer darf was?« ASP.NET und Sicherheit
14 Webanwendungen erstellen und konfigurieren
15 Leistungssteigerung durch Caching
16 Web Services
A Anhang
Index
Download (ca 14,3 MB)
Buch bestellen (29,90 EUR)
Ihre Meinung?@
<< zurück | Galileo Computing / <openbook> / Einstieg in ASP.NET | vor >>
Einstieg in ASP.NET von Matthias Lohrer
| Kapitel 12 ASP.NET und Datenbanken
|  | 12.1 Auf Datenbanken zugreifen – ein Crashkurs
|  |  | 12.1.1 Eine Tabelle im Browser anzeigen
|  |  | 12.1.2 Über den Browser einen Datensatz hinzufügen
|  | 12.2 Wie ADO.NET funktioniert – ein Überblick
|  | 12.3 Die Verbindung zur Datenbank herstellen
|  |  | 12.3.1 OleDbConnection
|  |  | 12.3.2 SqlConnection
|  | 12.4 Daten lesen mit SqlCommand und OleDbCommand
|  |  | 12.4.1 ExecuteReader
|  |  | 12.4.2 ExecuteNonQuery und die Parameters-Collection
|  |  | 12.4.3 ExecuteScalar
|  | 12.5 SqlDataReader und OleDbDataReader
|  |  | 12.5.1 Ein Reader-Objekt an ein Steuerelement binden
|  |  | 12.5.2 Ein Reader-Objekt an ein Listensteuerelement binden
|  |  | 12.5.3 Ein Reader-Objekt zeilenweise auswerten
|  | 12.6 Die DataSet-Klasse
|  |  | 12.6.1 Das Zusammenspiel von Command, Adapter und DataSet
|  |  | 12.6.2 Mehrere Tabellen in ein DataSet-Objekt einlesen
|  |  | 12.6.3 Auf einzelne Zeilen, Spalten und Tabellen eines DataSet-Objekts gezielt zugreifen
|  |  | 12.6.4 Relationen zwischen Tabellen festlegen
|  | 12.7 DataViews verwenden
|  |  | 12.7.1 Tabellen sortieren
|  |  | 12.7.2 Tabellen nach Inhalten filtern
|  |  | 12.7.3 Nach dem Zeilenstatus filtern
|  |  | 12.7.4 In Tabellen suchen
|  | 12.8 Mit ASP.NET Daten bearbeiten
|  | 12.9 Daten bearbeiten mit dem Command-Objekt
|  | 12.10 In-Place-Editing mit dem DataGrid-Steuerelement
|  |  | 12.10.1 Die EditItemIndex-Eigenschaft
|  |  | 12.10.2 Das asp:DataGrid-Tag anpassen
|  |  | 12.10.3 OnEditCommand: Daten bearbeiten
|  |  | 12.10.4 OnCancelCommand: Die Bearbeitung abbrechen
|  |  | 12.10.5 OnUpdateCommand: Die Änderungen sichern
|  |  | 12.10.6 Das Repeater-Steuerelement verwenden
|  |  | 12.10.7 Die Ereignisse des Repeater-Steuerelements auswerten
|  | 12.11 Das DataList-Steuerelement
|  |  | 12.11.1 In-Place-Editing mit dem DataList-Steuerelement
## 12.7 DataViews verwenden Ein DataView-Objekt stellt eine individuell angepasste Ansicht eines DataTable-Objektes zur Verfügung. Mit einem DataView-Objekt können Sie die Daten einer Tabelle filtern, sortieren, durchsuchen und bearbeiten. Ein DataView-Objekt können Sie an ein Steuerelement binden. ### 12.7.1 Tabellen sortieren In Abschnitt 12.15, Das Zusammenspiel von Command, Adapter und DataSet, haben Sie alle Versandfirmen ausgegeben. Wenn Sie die Ausgabe alphabetisch nach Firmenname sortieren möchten, dann gehen Sie so vor: 1. Erstellen Sie ein DataView-Objekt. Dim alpha As DataView 2. Weisen Sie dem DataView-Objekt die Basistabelle zu. alpha = New DataView(myDS.Tables(0)) 3. Weisen Sie der Sort-Eigenschaft den gewünschten Sortierausdruck zu. alpha.Sort ="Firma ASC" 4. Binden Sie das DataView-Objekt an das Steuerelement. myGrid.DataSource = alpha DataBind() Der Eigenschaft Sort des DataView-Objekts weisen Sie den gewünschten Sortierausdruck zu. Im Prinzip entspricht dieser Teil dem ORDER-BY-Anteil eines entsprechenden SQL-Befehls. 5. Abbildung 12.16 zeigt die sortierte Tabelle im Browser. Hier klicken, um das Bild zu Vergrößern Abbildung 12.15 Mit dem DataView-Objekt können Sie Tabellen sortieren, filtern und durchsuchen. ### 12.7.2 Tabellen nach Inhalten filtern So, wie Sie mit der Sort-Eigenschaft die Daten sortieren, können Sie über die RowFilter-Eigenschaft die Daten filtern. Natürlich können Sie auch beides miteinander verbinden. Alle Versandfirmen, deren Telefonnummer mit (503) anfängt, erreichen Sie über diesen Ausdruck:
    alpha.RowFilter = "Telefon LIKE '(503)%'"
Die Angabe für die Eigenschaft RowFilter entspricht dem WHERE-Anteil eines SQL-Befehls. Als Platzhalterzeichen ist übrigens neben dem SQL-typischen % auch das * erlaubt. Zum Erfolg führt also auch dieser Ausdruck:
    alpha.RowFilter = "Telefon LIKE '(503)*'"
Hier einige weitere Beispiele. Alle Versandfirmen mit einer Firmen-Nr. größer als 2 erreichen Sie mit diesem Ausdruck (db_13.aspx):
    alpha.RowFilter = "[Firmen-Nr] > 2"
Achtung Dabei müssen Sie darauf achten, das Feld Firmen-Nr in eckige Klammern einzuschließen. Der Bindestrich im Feldnamen würde sonst falsch ausgewertet werden.
Datumsangaben setzen Sie zwischen Doppelkreuze und verwenden die englische Datumsdarstellung MM/TT/JJJJ. Sie haben beispielsweise ein DataTable-Objekt mit diesem SQL-Ausdruck erstellt:
    SELECT Bestelldatum, Empfänger FROM Bestellungen".
Wenn Sie alle Bestellungen vom November 1996 in chronologischer Reihenfolge darstellen wollen, verwenden Sie diese beiden Zuweisungen:
    alpha.Sort ="Bestelldatum ASC"
    alpha.RowFilter = "Bestelldatum >= #12/01/1996# AND Bestelldatum <=#12/31/1996#"
### 12.7.3 Nach dem Zeilenstatus filtern Sie können Tabellen auch nach dem Zeilenstatus selektieren. Damit sind Abfragen folgender Art möglich: »Zeige mir alle Zeilen, die verändert/hinzugefügt/als gelöscht markiert/etc. wurden«. Hierfür verwenden Sie die Eigenschaft RowStateFilter. Die Enumeration DataViewRowState definiert die zulässigen Werte:
| Added die hinzugefügten Zeilen,
| CurrentRows die aktuellen Zeilen,
| Deleted die gelöschten Zeilen,
| ModifiedCurrent die geänderten Zeilen in der geänderten Form,
| ModifiedOriginal die ursprüngliche Form der geänderten Zeilen,
| None keine Zeilen,
| OriginalRows die Zeilen in der Originalversion,
| Unchanged die unveränderten Zeilen.
Der folgende Ausdruck selektiert beispielsweise die hinzugefügten Zeilen:
    myView.RowStateFilter = DataViewRowState.Added
Mit dem booleschen Operator OR können Sie mehrere Angaben miteinander kombinieren. ### 12.7.4 In Tabellen suchen »Gibt es Zeilen, die diesen und jenen Bedingungen entsprechen? Wenn ja, wo finde ich die erste passende Zeile? Zeige mir alle Treffer!« Für Anfragen dieser Art eignen sich die Find- und die FindRows-Methode. Find kann Ihnen sagen, ob es überhaupt entsprechende Zeilen gibt. Wenn ja, erhalten Sie die Indexposition des ersten passenden Datensatzes. Die FindRows-Methode liefert alle passenden Zeilen selbst in Form eines Arrays aus DataRowView-Objekten. Vorbedingung für die Verwendung beider Methoden ist, dass das DataView-Objekt nach dem Feld beziehungsweise nach den Feldern sortiert ist, in dem beziehungsweise in denen gesucht wird. Gibt es Bestellungen vom 5.12.1996? So suchen Sie nach passenden Einträgen: 1. Erstellen Sie ein DataView-Objekt von der Tabelle Bestellungen. Dim dv As DataView dv = New DataView(myDS.Tables(0)) 2. Sortieren Sie die Tabelle Bestellungen nach dem Bestelldatum. dv.Sort ="Bestelldatum ASC" 3. Rufen Sie die Find-Methode mit dem gesuchten Datum auf. Dim suchDatum As Date = #12/05/1996# Dim erg As Integer erg = dv.Find (suchDatum) Wenn erg -1 zurückgibt, gibt es keine passenden Datensätze. Andernfalls enthält erg die Indexposition des ersten passenden Eintrags. Falls Ihnen der erste passende Eintrag ausreicht, können Sie mit der Indexposition direkt auf den gefundenen Datensatz zugreifen. So lesen Sie beispielsweise das Feld Empfänger des gefundenen Datensatzes aus:
    dv(erg)("Empfänger")
Wenn Sie das Feld im Rahmen von String-Operationen verwenden, müssen Sie es erst noch in den Datentyp String konvertieren, etwa so:
    dv(erg)("Empfänger").toString()
Falls Sie alle Treffer benötigen, müssen Sie noch FindRows aufrufen. FindRows liefert die Ergebnismenge als Array aus DataRowView-Objekten. Dieses Array können Sie als Datenquelle für ein DataGrid-Steuerelement angeben:
    Dim drv As DataRowView()
    drv = dv.FindRows (suchDatum)
    myGrid.DataSource = drv
    myGrid.DataBind()
db_15.aspx fasst diese Suchschritte zusammen. Abbildung 12.16 zeigt die Darstellung im Browser.
       ' ...
       ' DataView erstellen
       Dim dv As DataView
       dv = New DataView(myDS.Tables(0))
       ' DataView nach der Spalte sortieren, in der
       ' gesucht werden soll
       dv.Sort ="Bestelldatum ASC"
       ' Feststellen, ob es passende Einträge gibt.
       Dim suchDatum As Date = (#12/05/1996#)
       Dim erg As Integer
       erg = dv.Find (suchDatum)
       ' Suchergebnis ausgeben
       Dim sb As New StringBuilder
       sb.Append("Gibt es Bestellungen vom ")
       sb.Append(CStr (suchDatum) & "?<br>")
       If erg = -1 Then
          sb.Append ("Es gibt keine passenden Datensätze")
       Else
          sb.Append("Es gibt passende Datensätze. <br>")
          sb.Append("Der erste passende Datensatze hat ")
          sb.Append("die Indexposition: " & CStr(erg))
          ' Passende Datensätze anzeigen
          Dim drv As DataRowView()
          drv = dv.FindRows (suchDatum)
          myGrid.DataSource = drv
          myGrid.DataBind()
       End If
       ausgabe.innerHTML = sb.toString()
       ' ...
Hier klicken, um das Bild zu Vergrößern Abbildung 12.16 Die Methoden Find und FindRows ermöglichen das gezielte Suchen in DataView-Objekten.
Konstruktoren
New() New(DataTable) New(DataTable, String, String, DataViewRowState) | Neben dem DataTable können RowFilter, Sort und DataViewRowState dem Konstruktor übergeben werden.
Eigenschaften
AllowDelete | Boolean | True, wenn Löschen erlaubt ist
AllowEdit | Boolean | True, wenn Bearbeiten erlaubt ist
AllowNew | Boolean | True, wenn mit AddNew neue Zeilen hinzugefügt werden dürfen
ApplyDefaultSort | Boolean | True, wenn die Standardsortierung verwendet werden soll
Count | Integer | Anzahl der Datensätze nach Anwendung von RowFilter und RowStateFilter
DataViewManager | DataViewManager | Der zugeordnete DataViewManager
Item(Integer) | DataRowView | Standardeigenschaft. Die über die Ordnungszahl definierte Zeile
RowFilter | String | Filterausdruck. Entspricht weit gehend dem WHERE-Ausdruck eines SQL-Statements
RowStateFilter | DataViewRowState | Selektiert die Zeilen nach ihrem Status. Mögliche Werte der Enumeration DataViewRowState sind: Added, CurrentRows, Deleted, ModifiedCurrent, ModifiedOriginal, None, OriginalRows, Unchanged.
Sort | String | Sortierausdruck. Entspricht der ORDER-BY-Klausel eines SQL-Statements
Table | DataTable | Die zugrunde liegende Tabelle
Methoden
AddNew() | DataRowView | Fügt der DataView eine neue Zeile hinzu
Delete(Integer) |  | Löscht eine Zeile
Find(Object) Find(Object()) | Integer | Sucht eine Zeile anhand des Sortierschlüsselwertes. Die DataView muss nach der Spalte, in der gesucht wird, sortiert sein.
FindRows(Object) FindRows(Object()) | DataRowView() | Liefert ein Array von DataRowView-Objekten, deren Spalten dem Sortierschlüsselwert entsprechen
GetEnumerator() | IEnumerator | Ein Enumerator für dieses DataView
Tabelle 12.9 Steckbrief der Klasse DataView
<< zurück | <top> | vor >>
Zum Katalog
Einstieg in ASP.NET bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung

.NET-Bibliothek
| Einstieg in VB.NET
| VB.NET
| Einstieg in C#
| Visual C#
| VB.NET und Datenbanken

Empfehlung
| Einstieg in XML

Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

MyGalileo
Der Service für registrierte Leser: Info

Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

[Galileo Computing]
Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de