Verwenden Sie die ASP+ List -Bindungssteuerung
Nikhil Kothari
Microsoft Corporation
Juli 2000
Zusammenfassung: Erklären Sie ASP+ Repeater, Datalist und DataGrid Server -Steuerelemente. Diese Steuerelemente können eine Datenquelle, die HTML -basierte Anwendungsbenutzeroberfläche, realisieren. Diskutieren Sie die Konzepte dieser Kontrollen und fassen Sie die grundlegenden Beispiele für die Verwendung dieser Kontrollen zusammen.
Inhaltsverzeichnis
Kurze Einführung
Wie funktioniert die Listbindungssteuerung?
Repeater -Kontrolle
DATALIST -Steuerung
Datagrid -Steuerung
Repeater, Datalist oder DataGrid?
Verwandte Ressourcen
Laden Sie die Beispieldatei (56 KB) herunter, die sich auf diesen Artikel beziehen.
Kurze Einführung
Repeater, Datalist und DataGrid Control bilden die zugehörigen Websteuerungssätze im Namensraum des Systems. Diese Steuerelemente erstellen den Inhalt der Bindungsliste oder der Datenquelle der HTML -Anzeige. Daher bezeichnen sie sie gemeinsam als "Listenbindungskontrollen".
Ähnlich wie bei anderen Websteuerungen im Framework bieten diese Steuerelemente konsistente Programmiermodelle und verkapulieren eine repräsentative Logik unabhängig vom Browser. Diese Eigenschaften ermöglichen es Entwicklern, in Objektmodellen zu programmieren, ohne das inkonsistente und komplexe technische Wissen im Zusammenhang mit HTML zu beherrschen.
Diese drei Steuerelemente können den Datenquelleninhalt darstellen, der sich auf seine zugehörigen Datenquellen gemäß einer Vielzahl von Layouts bezieht (einschließlich Listen, Spalten/Zeitungsspalten und Stream -Layouts (HTML -Streams)). Darüber hinaus können Sie auch ein völlig anderes oder vollständig angepasendes Layout erstellen. Zusätzlich zur Logik der Verpackung bietet es auch die Funktion der Verarbeitung der übertragenen Daten, der Ausführungsstatusverwaltung und der ausgelösten Ereignisse. Schließlich bieten sie auch unterschiedliche Unterstützung für Standardoperationen wie Auswahl, Bearbeitung, Paging und Sortierung. Diese Steuerelemente können mehrere gängige Webanwendungen vereinfachen, einschließlich Berichten, Einkaufswagen, Produktlisten, Abfragergebnissen und Navigationsmenüs.
Das Folgende veranschaulicht diese Steuerelemente weiter und wie Sie sie in Ihren Webanwendungen verwenden und wie Sie Steuerelemente auswählen.
Wie funktioniert die Listbindungssteuerung?
Dieser Abschnitt ist das Hintergrundmaterial des Restes dieses Artikels. Überblick über die Arbeitsmethoden dieser Listenbindungskontrollen, ihre gemeinsamen Merkmale und bestimmte verwandte Konzepte.
DataSource -Attribut
Jedes Steuerelement verfügt über ein DataSource -Attribut mit seinem Typ ist System.Collections.icollection. In den einfachsten Wörtern sind Datenquellen eine Liste oder Sammlung ähnlicher Objekte.
Mehrere Objekte in diesem Framework bieten die Implementierung der Icollection. Diese Sammlung umfasst System.Data.Dataview (sie wird normalerweise zum Zugriff auf relationale Datenbanken und XML -Daten verwendet), allgemeine Icollection -Implementierung (wie ArrayList und Hashtable) und Array.
Im Gegensatz zu herkömmlichen Datenbindungssteuerungen (in der Regel müssen sie ADO -Datensatzsätze benötigen), mit Ausnahme der ICollection -Schnittstelle, stärken diese Listenbindungsteuerungen keine weiteren Anforderungen für ihre Datenquellen. Entsprechend dem Entwurf hat die Art und die Datenstruktur, die als gültiger DataSource -Attributwert über einen großen Betrag verwendet werden können, und können die einfache und Flexibilität für Ihren Anwendungscode maximieren.
Projektsammlung
Jede Listenbindungsregelung enthält einen Projektsatz. Das Steuerelement wird in seine Projektsammlung eingestellt, indem die aktuelle Datenquelle dieser Objekte aufgeführt ist. Erstellen Sie ein einzelnes Element für jedes Objekt und verwenden Sie es, um das Objekt darzustellen. Diese Elemente sind Teil der in der List -Bindungsregelung enthaltenen hierarchischen Struktur.
In der folgenden Tabelle werden die mit der Datenquelle zugeordneten Projekttyp aufgeführt.
Der Standard -Projekttyp, der vom Projekt erstellt wurde
AlternatingItem ist die Projekterstellung mit ungeraden Geboten in der Projektsammlung
SelectedItem wird für das ausgewählte Projekt erstellt (unabhängig davon, ob das Projekt ein alternatives Projekt ist)
EditItem wird für Projekte im Bearbeitungsmodus erstellt (unabhängig davon, ob es ausgewählt oder alternativ ist)
Die Steuerung wird gleichzeitig in den folgenden Elementen erstellt, die verwendet werden. Sie sind jedoch nicht mit Datenquellendaten verbunden.
Der Header wird verwendet, um die Header -Informationen darzustellen
Die Fußnote wird verwendet, um die fundierbaren Informationen anzuzeigen
Die Separatoren werden verwendet, um den Inhalt zwischen jedem in Abbildung 1 gezeigten Element darzustellen, und er ist nur für den Repeater und den Datalisten anwendbar
Das Paging -Symbol wird verwendet, um die mit der DataGrid -Steuerung verbundene Paginierungs -Benutzeroberfläche anzuzeigen
Abbildung 1. im Vergleich zur Sammlung "Projekt" der "Kontroll" -Kollektion
Projektdatenbindung und Erstellung
Die Listenbindungsregelung folgt dem expliziten Datenbindungsmodell, das im gesamten ASP+ -Fordnungsbild implementiert ist. Dies bedeutet, dass die Steuerung nur aufgeführt werden muss, wenn die Datenbankmethode aufgerufen wird.
Wenn die Datenbankmethode aufgerufen wird, listet die Listensteuerung die Datenquelle auf, erstellt ein Projekt und initialisiert es, indem der Wert aus seiner Datenquelle extrahiert wird. Wenn die Statusverwaltung aktiviert ist, speichert das Steuerelement auch alle erforderlichen Informationen, um sein Projekt während der Rückgabeverarbeitungszeit der Seite erneut zu erstellen, ohne dass die Datenquelle erneut einsetzt wird.
Mit dem expliziten Datenbindungsmodell kann Ihr Anwendungscode genau bestimmen, wann und wo die Datenquelle in der Verarbeitungssequenz benötigt wird. Diese Funktion macht den Zugriff auf Datenbankserver weniger effizienter, und diese Zugriffe sind in der Regel der am meisten verbrauchte Betrieb von Webanwendungen.
Die allgemeine Regel ist, dass Datenbank aufgerufen werden muss, wenn Sie das Projekt neu erstellen müssen. In den meisten Fällen rufen Sie Datenbank an, wenn Ihre Seite zum ersten Mal eine erste Projektsammlung erstellt wird. Während der Ausführung dieser Seite folgen Sie diese Methode in verschiedenen Ereignisverarbeitungsverfahren, die durch die Projektsammlung geändert werden. Dies geschieht, wenn die Abfrage zum Erstellen der anfänglichen Datenquelle stattfinden kann. Dies kann auch geschehen, wenn sich der Status des Projekts ändert (z. B. nur vom Bearbeitungsmodus wechseln).
Stil
Durch die Verwendung von Stilattributen für das Objektmodell können Sie alle Datalisten- und DataGrid -Steuerelemente sowie die enthaltenden Formate und Erscheinungen definieren. Diese Attribute dürfen Schriftarten, Farben, Ränder und andere Aussehensfaktoren anpassen. Das Stilmerkmal der Steuerung selbst (z. B. Vordergrundfarbe, Hintergrundfarbe, Schriftart und Randstil) wirkt sich auf die Darstellung der gesamten Kontrolle aus.
Darüber hinaus enthält jedes Steuerelement eine große Anzahl von Stilattributen, die den erstellten Artikeln wie ItemStyle, AlternatingItemstyle und HeaderStyle entsprechen. DataGrid bietet Attribute im dritten Stil, die alle Zellen in bestimmten Spalten beeinflussen. Jede in der Steuerung enthaltene Spalte kann ihre eigene HeadlderSyle, FootfanSyle und ItemStyte haben.
Vorlage
Das Style Control -Format wird angezeigt, während die Vorlage den Inhalt und die Darstellung jedes Elements definiert. Sie können sich die Vorlage als ein HTML -Codeblatt vorstellen, das die von der repräsentierte steuerchierarchische Struktur definiert.
Repeater- und Datalist -Steuerelemente werden von Ihren angegebenen Vorlagen angesteuert, um verschiedene Eigenschaften für festgelegte Vorlagen bereitzustellen, z. B. ElementTemplate, AlternatingItemTemplate und Headertemplate. Ähnlich wie im Stil entspricht jede Vorlage einem bestimmten Projekttyp.
DataGrid Control ist keine Vorlage. Die TemplateColumns in der Spaltensammlung des Steuerelements verwenden jedoch die Verwendung von Vorlagen in DataGrid. Jede Zelle im TemplateColum kann eine Vorlage enthalten, die den Elementen im Repeater oder der Datalist -Steuerung sehr ähnlich ist. Dies ermöglicht auch die Anpassung in DataGrid.
Datenbindung in der Vorlage
Die in den Template Definitionselemente enthaltene hierarchische Struktur. Durch die Verwendung von Datenbindungsausdrücken können die Kontrollattribute in dieser Ebenestruktur an die mit diesem Projekt verbundenen Dateneigenschaften gebunden werden.
Das logische übergeordnete Projekt -Level -Projekt als Vorlage wird im Datenbindungsausdruck als "Container" bezeichnet. Jeder Container verfügt über ein Attribut namens Dataitem, das seine zugehörigen Daten zitiert. Infolgedessen binden die meisten typischen Datenbindungsausdrücke in der Vorlage die Kontrollattribute auf einer bestimmten Eigenschaft des Containers. Diese Bindung wird in den folgenden Beispielen weiter erklärt.
Repeater -Kontrolle
Wie bereits erwähnt, wird die Repeater -Steuerung vollständig von der Vorlage angetrieben, die eine vollständig angepasste Darstellung und Layout ermöglicht. Die folgende Abbildung zeigt diese Funktion.
Abbildung 2. Linkliste der verknüpften Projektsymbole, die mit dem Repeater Control generiert wurden
Auszug aus Repeater1.aspx:
<%@Page Language = C# Src = Repeater1.cs inerits = Proben.Repeter1Page%>
Elastisch
<ASP: Repeater Runat = Server ID = Linkslistrrepeater
DataSource = '< %# SiteLinks %>'>
<Template Name = Headertemplate>
<Ul Typ = 1>
</template>
<Template name = itemTemplate>
<li>
<ASP: Hyperlink Runat = Server
text = '< %# Databinder.eval.eval (Container.Dataitem, Site) %>'
navigateurl = '< %# Databinder.eval.eval.Dataitem, SiteUrl) %>'>
</Asp: Hyperlink>
</li>
</template>
<Template name = footertemplate>
</ul>
</template>
</ASP: Repeater>
Diese .aspx -Datei zeigte eine Anweisung zur Generierung eines Repeater -Steuerelements, um eine Liste von Projektsymbolen zu generieren.
Dieses Beispiel zeigt die Anweisungsmethode zur Festlegung der Datenquelle mit der Datenbindungssyntax (<%#...%>). Wenn Sie die Datenbankmethode aufrufen, wird der Ausdruck in der Datenbindung ausgeführt. In diesem Fall ist die DataSource -Eigenschaft des Repeaters an die Sitelinks -Eigenschaft auf der Seite gebunden, und letztere enthält die zu angezeigte URL -Referenz.
Repeater ist die einzige Kontrolle, die es HTML -Fragmenten ermöglicht, in seiner Vorlage zu existieren. In diesem Beispiel ist die Liste der Projektsymbole in drei Teile unterteilt:
Begonnen durch die Liste der Headertemplate (<ul type = 1>).
Beenden Sie das Etikett (</ul>) mit der von Footertemplate dargestellten Liste.
Der Hauptteil der Liste wird aus dem Listelement (<li>) angezeigt, das durch Wiederholung der ElementTemplate in jedem Objekt im Sitelinks -Satz generiert wird.
Sie können diese Vorlagen auch verwenden, um die Startmarke (<Table>) im Header anzugeben, die Endbezeichnung (</table>) die Tabelle in der Fußnote angibt und eine einzelne Uhrzeile in jedem Projekt angeben (<Te>) Wesen Diese Ersatzoption führt zur Listenrepräsentation.
Sie müssen itemTemplate angeben. Es ist die einzige notwendige Vorlage. Wenn andere Vorlagen nicht angegeben werden, verwendet das Steuerelement diese ItemTemplate automatisch für andere Vorlagen.
Im folgenden Beispiel enthält ItemTemplate eine Hyperlink -Websteuerung. Die Text- und Navigateurl -Attribute dieser Steuerung sind an Dateneigenschaften gebunden, die jedem doppelten Projekt zugeordnet sind. Dies wird durch die Verwendung von Datenbindungsexpression (sofort nach dem Ausdruck nach dem Erstellen eines Projekts gesucht) abgeschlossen.
Repeater1.cs:
Namespace -Beispiele {
Elastisch
Public class Repeater1page: Seite {
Geschützter Repeater linkslistrrepeater;
Öffentliche iCollection SiteLinks {
erhalten {
ArrayList Sites = new ArrayList ();
Sites.add (neue SiteInfo (Microsoft Home,
http://www.microsoft.com);
Sites.add (neue SiteInfo (MSDN Home,
http://msdn.microsoft.com);
Sites.add (neue SiteInfo (MSN Homepage,
http://www.msn.com));
Sites.add (neue SiteInfo (Hotmail,
http://www.hotmail.com));
Rückgabestellen;
}
}
Protected Override void Overad (eventArgs e) {{{{{{{{
Base.onload (e);
if (! ispostback) {
// Wenn die Seite zum ersten Mal angefordert wird, wird die Datenbindung durchgeführt.
// Auf diese Weise werden jede Steuerung in der hierarchischen Steuerstruktur dieser Seite rekursiv aufgerufen.
Datenbank ();
}
}
}
public versiegelte Klasse SiteInfo {
Private String -Site;
Private String SiteUrl;
public SiteInfo (String Sitename, String SiteUrl) {{{{{{{
this.SiteName = sitename;
this.siteurl = SiteUrl;
}
öffentliche String -Site {
Holen Sie sich {Rückkehrort;}
}
public String SiteUrl {
Geturn Siteurl;}
}
}
}
Diese .cs -Datei enthält den Code, der zusammen in der ASPX -Seite in der vorherigen Liste angezeigt wird.
Die Repeater1Page -Klasse deckt die Onload -Methode der Seitenklasse ab. Dies zeigt an, dass die Datenbank in der ersten Anfrage dieser Seite aufgerufen wird. Dies führt dazu, dass der Datenbindungsausdruck auf diesen Seiten die Daten bewertet und die Repeater -Steuereliste zur Quelle der Daten und die Erstellung ihrer Projekte erstellt. Rufen Sie die Datenbankmethode nur bei der ersten Anfrage an. Der Grund, warum dies funktionieren kann, liegt darin, dass der Repeater sein Projekt im Renditeprozess des vorbehaltlichen Status zuvor wiederherstellen kann, ohne dass Datenquelleninstanzen erforderlich sind.
Diese Seite enthält die öffentlichen Attribute der Typ -Icollection. Dies wird in der Datenbindungsexpression des DataSource -Attributwerts des Repeaters verwendet. Die Akquisition von Attributen verwendet ArrayList mit einer Reihe von SiteInfo -Sequenzen. Dieses Attribut ist öffentlich, da nur Seiten öffentlicher und Schutzmitglieder in Datenbindungsausdrücken verwendet werden können.
Jedes SiteInfo -Objekt enthält zwei Attribute: Sitename und SiteUrl. Wenn die Datenbindung der Hyperlink -Steuerung in der Vorlage auf diese Attribute zugreifen. In der Bindungsexpression dieser Kontrolle, Container.Dataitem, sagte, dass es notwendig ist, ein bestimmtes Element an ein einzelnes SiteInfo -Objekt darauf zu binden. Databinder.eval (Container.Dataitem, Sitename) besucht die SiteName -Eigenschaft des aktuellen SiteInfo -Objekts.
Repeater1 Beispiel führt Sie in mehrere grundlegende Konzepte vor:
Definitionsvorlage
Datenbindung der Grammatik- und Datenbindungsexpression in der Vorlage
Verwenden Sie die Icollection von ArrayList als Datenquelle
Rufen Sie die Datenbankmethode während der ersten Verarbeitungsseite auf
DATALIST -Steuerung
Die Datalistensteuerung ist eine vorlagenorientierte Steuerung, die die Möglichkeit bietet, Stilattribute zu verwenden, um seine Fähigkeiten zu formatieren. Es kann auch mehrere Spalten erzeugen. Abbildung 3 zeigt diese beiden Eigenschaften.
Abbildung 3. Beispiele, die aus den doppelten Spalten von Datalist generiert wurden
Auszug aus datalist1.aspx:
<%@Page Language = C# src = datalist1.cs inerits = modples.datalist1page%>
Elastisch
<ASP: Datalist Runat = Server ID = PicalDatalist
Repeatcolumns = 2 repeatdirection = vertikale WiederholungMode = Tabelle
Breite = 100%>
<poperty name = alternatingItemstyle>
<ASP: TableItemStyle BackColor =#Elyeee/>
</Property>
<Template name = itemTemplate>
<ASP: Panel Runat = Server Font-Size = 12pt Font-Bold = True>
< %# ((Person) Container.Dataitem) .Name %>
</ASP: Panel>
<ASP: Etikett Runat = Server Width = 20px
BORDERSYLE = Feste Grenzbreite = 1px BorderColor = schwarz
BackColor = '< %# (Person) Container.Dataitem)
</ASP: Etikett>
<ASP: Label Runat = Server-Schriftgröße = 10PT
Text = '< %# GetColorname ((Person) Container.Dataitem)
</ASP: Etikett>
</template>
</ASP: Datalist>
Diese .aspx -Datei zeigte eine Anweisung des Datalisten, mit der dieses Beispiel generiert wurde.
In diesem Beispiel wird das Multi -Column -Layout des Datalisten erreicht, indem die RepeatColumns -Eigenschaft auf "2" festgelegt wird. Wenn Sie die Wiederholung als "vertikal" festlegen, wird das Projekt von oben nach unten angeordnet und dann von links nach rechts angeordnet. Umgekehrt wird der auf "horizontale" festgelegte Wert das Projekt von links nach rechts und dann von oben nach unten angeordnet.
Die ASPX -Syntax enthält Einstellungen für einige Attribute für datenalistische Stil. In diesem Beispiel ist die Breite von Datalist auf 100%der übergeordneten Ebene eingestellt. Der AlternatingItemstyle mit einem grauen Hintergrund besteht darin, ein gestreiftes Erscheinungsbild zu erhalten. Dieses Beispiel zeigt auch, dass die Vorlage jede komplexe Kontrolldefinition enthalten kann, um den Anforderungen des Erhalts des idealen Layouts in jedem Projekt zu erfüllen.
Schließlich ist die Datenbindungsexpression in dieser Vorlage in der frühen Stufe bindend, indem Container in seinen Typ konvertiert. Dies verursacht nicht die spätere Bindung der späteren Bindung der späteren Bindung der Verwendung des Datenbebinders.eval (wie in Repeater1 gezeigt). Diese Methode kann jedoch zu einer schlechten Lesbarkeit führen. Das folgende Beispiel gibt auch ein Ausdrucksbeispiel an, das die GetColorname -Methode aufruft (diese Methode wird in einer auf dieser Seite unterstützten Datei implementiert).
Datalist1.cs:
Namespace -Beispiele {
Elastisch
öffentliche Klasse Datalist1page: Seite {
Geschützte datalistische Menschen in Venekern;
Protected String getColorname (Farbe c) {
Zurückkehren
TypeDescriptor.getConverter (typeof (color)).
}
Prive void loadpeicallist () {
// Erstellen Sie eine Datenquelle
Person [] people = New Person [] {
Neue Person (Nikhil Kothari, Color.green),
Neue Person (Steve Millet, Color.Purple), Color.purple),
Neue Person (Chris Anderson, Color.Blue), Color.Blue,
Neue Person (Mike Pope, Color.orange),
Neue Person (Anthony Moore, Color.yllow),
Neue Person (Jon Jung, Color.Mediumaquamarine),
Neue Person (Susan Warren, Color.SlateBlue),
Neue Person (Izzy Gryko, color.red)
};
// Legen Sie die Datenquelle des Steuerelements fest
picaldatalist.dataSource = peple;
// und lassen Sie die Steuerung diese Datenquelle verwenden, um ihr Projekt zu erstellen
picaldatalist.databind ();
}
Protected Override void Overad (eventArgs e) {{{{{{{{
Base.onload (e);
if (! ispostback) {
// Siehe diese Seite zum ersten Mal
Loadpeicallist ();
}
}
}
public versiegelte Klasse Person {
Privater Zeichenfolge Name;
Prive Farbvorbevorzugung;
Public person (Zeichenfolge Name, Farbvorbevorzugung) {{{{{{{{
this.name = name;
this.favoreColor = favoriteColor;
}
Öffentliche Farbvorbevorzugung {
Geturn FavoriteColor;}
}
öffentlicher Zeichenfolge Name {
Geturn Name;}
}
}
}
Auf dieser Seite wird das DataSource -Attribut des Steuerelements durch Programmeinstellungen festgelegt, die in der ASPX -Datei festgelegt sind. Die Ergebnisse der beiden Methoden sind gleich. Welche Art von Methode nicht ausgewählt werden kann, Sie müssen die Datenbankmethode aufrufen, damit die Steuerung die Datenquellen auflisten und Elemente erstellen kann, die sie anzeigen möchten.
Die in diesem Beispiel verwendete Datenquelle ist ein einfaches Array von Personenobjekten. Da jedes Array die Icollection -Methode implementiert, ist das Array für die Datenquelle geeignet. Dies zeigt die Flexibilität, die erhalten werden kann, wenn die Datenstruktur und der Typ erhalten werden können, wenn die Datenquelle erhalten werden kann.
Datalist1 Beispiel führt die folgenden Konzepte vor:
Definieren Sie die reichhaltige HTML -Benutzeroberfläche in der Vorlage
Verwenden Sie einfaches Array als Datenquelle
Legen Sie die Datenquelle über das Programm ein
Verschiedene Ausdrücke, die in der Datenbindungssyntax zulässig sind