Datagrid -Steuerung
Mit DataGrid Control können Sie eine Liste mit reichem Datenquellenformat generieren. Darüber hinaus unterstützt es Auswahlelemente mit anderen Operationen.
Die vier Beispiele dieses Abschnitts verwenden Tabellen, die die Titelinformationen enthalten (Titel-, Titel -ID-, Autor-, Preis- und Veröffentlichungsdatum). Alle Daten werden mit XML in titlesdb.xml aufrechterhalten. Wenn Sie eine Seite festlegen, um den Inhalt dieser Tabelle darzustellen und Bücher auszuwählen, folgen diese Beispiele der inkrementellen Methode. Die Codeliste enthält den schwarzen Körpertext, um die Änderung eines im vorherigen Beispiels eingebauten Beispiels anzuzeigen.
Test von titlesdb.xml:
<root>
<schema id = documentElement targetNameSpace =
xmlns = http://www.w3.org/1999/xmlschema
xmlns: msdata = urn: Schemas-microsoft-com: xml-msdata>
<Element name = table>
<Komplextyp -Inhalt = elementSonly>
<Element name = title_id type = string> </element>
<Element name = title type = string> </element>
<Element name = au_name type = string> </element>
<Elementname = Preis msdata: DataType = System.Currency
minoccurs = 0
Type = string> </element>
<Elementname = PubDate Type = TimeInstant> </element>
</ComplexType>
<nique name = titleconstraint msdata: primaryKey = true>
<Selector>
<Field> title_id </field>
</einzigartig>
</Element>
</schema>
<DocumentElement>
<title>
<title_id> bu1032 </title_id>
<titels> Die Datenbankhandbuch des geschäftigen Exekutive </title>
<um_name> marjorie green </au_name>
<Price> 19.99 </price>
<PubDate> 1991-06-12t07: 00: 00 </pubDate>
</Title>
Elastisch
</documentElement>
</root>
In einer typischen Webanwendung, um die maximale Skalierbarkeit und Leistung zu erhalten, wird wahrscheinlich Webdienste oder Geschäftsobjekte zum Zugriff auf Daten verwendet. Um diese Beispiele zu vereinfachen und sich auf die Verwendung von DataGrid anstelle von Datenzugriff zu konzentrieren, laden wir Daten gleichzeitig, wenn die Anwendung startet, und im ASP -Anwendungszustand in Global.asax Show.
Kofferraum von Global.asax:
public void application_onstart () {) {)
fileStream fs = null;
Datensatz ds = null;
versuchen {
fs = neuer fileStream (server.mappath (titlesdb.xml), fileMode.open,
Fileccess.read);
ds = neuer Datensatz ();
// Laden Sie die Daten in der XML -Datei in den Datensatz
ds.readxml (fs);
} Endlich {
if (fs! = null) {
fs.close ();
fs = null;
}
}
// cchestrate den Datensatz mit hoher Geschwindigkeit zum Anwendungszustand, damit er auf einer einzelnen Seite verwendet werden kann
Anwendung [titlesDataset] = ds;
}
DataGrid1
DataGrid1 veranschaulicht die grundlegende Verwendung von DataGrid, wodurch erklärt wird, wie das Steuerelement den kleinsten Benutzercode verwendet, um eine reichhaltige Funktion zu generieren.
FEIGE
Einfügen von DataGrid1.aspx ein:
<%@Page Language = C# src = datagrid.cs inerits = mustroy.datagridpage%>
Elastisch
<ASP: datagrid runat = server id = titlesGrid>
</ASP: DataGrid>
Die obige .aspx -Datei zeigte eine Anweisung ohne Attribute ohne Attribute der DataGrid -Steuerung.
DataGrid.cs:
Namespace -Beispiele {
Elastisch
Öffentliche Klasse DataGridPage: Seite {
Geschützte DataGrid -Titelgrid;
Public icollection gettitleslist () {
// Die Titelliste aus dem Datensatz von High -Geschwindigkeits -Cache im Anwendungsstatus rechnen.
Dataset titlesDataset = (Dataset) Anwendung [titlesDataset];
if (titlesDataset! = null) {
Return titlesDataset.tables [Titel] .DefaultView;
}
anders {
Null zurückkehren;
}
}
Private void loadtitlesgrid () {) {)
// Daten aus der Datenbank durchsuchen
iCollection titlesList = gettitlesList ();
// Legen Sie die Datenquelle des Steuerelements fest
titlesGrid.dataSource = titlesList;
// und nutze diese Datenquelle, um ihr Projekt zu erstellen
titlesGrid.databind ();
}
Protected Override void Overad (eventArgs e) {{{{{{{{
Base.onload (e);
if (! ispostback) {
// Siehe diese Seite zum ersten Mal
loadTitlesGrid ();
}
}
}
}
Die .cs -Datei enthält den für diese Seite verwendeten Code. Dieser Code entspricht der Codefunktion, die im Datalist1 -Beispiel verwendet wird. In der ersten Anfrage für diese Seite deckt es die Online -Methode zum Abrufen von Daten und zur Festlegung der DataSource -Eigenschaft des Steuerelements ab, bevor die Datenbank aufgerufen werden. Dadurch wird DataGrid sein Projekt erstellen, das in der Tabelle notwendige Zeilen sind. Bei der Rückgabe der Verarbeitung hat DataGrid das Projekt aus dem Status erstellt (dieser Zustand enthält den in der letzten Anfrage gespeicherten Zellinhalt).
Dieses Beispiel zeigt die Funktion der AutogenerateColumns -Eigenschaft der DataGrid -Steuerung. Der Standardwert dieses Attributs ist wahr. Wenn DataGrid auf TRUE eingestellt ist, wird Reflection verwendet, um die Datenquelle und -objekte zu überprüfen und eine Spalte für jedes öffentliche Attribut oder für jedes Feld zu erstellen. In diesem Beispiel repräsentiert das Steuerelement alle aktuellen Felder in der Tabelle "Titel". Mit dieser Funktion können die Liste des kleinsten Benutzercodes schnell und einfach eine Liste einer beliebigen Datenquelle generieren.
Jede Art der automatischen Säule ist Grenzschiff. Dieser Spaltentyp wandelt den ihm zugeordneten Attributwert in eine Zeichenfolge um, die als Fenster verwendet werden muss.
DataGrid2
DataGrid2 erläutert den DataGrid, der von den in der .aspx -Datei festgelegten Spalten festgelegt wurde.
Abbildung 5. Beispiele, die mit dem angegebenen Spaltendatagrid generiert wurden
Auszug aus DataGrid2.aspx:
<%@Page Language = C# src = datagrid.cs inerits = mustroy.datagridpage%>
Elastisch
<ASP: DataGrid Runat = Server ID = Titelgrid
Autogeneratecolumns = false>
<Poperty name = Spalten>
<ASP: boundColumn headeltext = title datafield = title/>
<ASP: boundColumn headeltext = Autor datafield = au_name/>
<ASP: boundColumn headerText = Datum veröffentlicht datafield = pubDate/>
<ASP: BoundColumn Headeltext = Price DataField = Preis/>
</Property>
</ASP: DataGrid>
Diese .aspx -Datei zeigte eine DataGrid -Steuerung mit einer von den Benutzern festgelegten Spalte. In diesem Beispiel werden dieselben codesupportierten Dateien wie DataGrid1 verwendet, da kein Code erforderlich ist.
Die AutogenerateColumns -Eigenschaft von DataGrid ist auf gefälscht eingestellt, um zu verhindern, dass die Steuerung automatisch Spalten generiert, und ermöglicht es Benutzern, für die Definition von Spalten verantwortlich zu sein, die in der Tabelle dargestellt werden.
Es gibt viele Vorteile:
Sie können die Reihenfolge der Spalten steuern. Liste in der Reihenfolge einer Erklärung. Andererseits wird die automatische Spalte durch die von dem Bild abgerufene Reihenfolge dargestellt.
Sie können den Header jeder Spalte mit der Spalten -Headertext -Eigenschaft angeben. Im vorherigen Beispiel gibt der Beschriftungsheader den Feldnamen an, der möglicherweise nicht angemessen ist. Bei Verwendung von Steuerelementen in diesem Modus bietet Columbns auch andere setzbare Attribute an.
Die Art der automatischen Säule ist immer Grenzen. Geben Sie den Spaltensatz an, damit der Benutzer den Typ jeder Spalte steuern kann.
DataGrid3
DataGrid3 wurde in DataGrid2 durch Hinzufügen visueller Formatierung und Formatierung erstellt.
Abbildung 6. Beispiele, die durch das Datagrid generiert werden, das die Attribute für Stil- und Format -Attribute festlegt
Auszug aus DataGrid3.aspx:
<%@Page Language = C# src = datagrid.cs inerits = mustroy.datagridpage%>
Elastisch
<ASP: DataGrid Runat = Server ID = Titelgrid
Autogeneratecolumns = false
Breite = 80%
backcolor = weiß
Borderbreite = 1PX BORDERSYLE = Feststoffzellpadding = 2 Zellspaziergang = 0
BorderColor = tan
Schriftname = Songstil Schriftgröße = 8pt>
<Poperty name = Spalten>
<ASP: boundColumn headeltext = title datafield = title/>
<ASP: boundColumn headeltext = Autor datafield = au_name/>
<ASP: BoundColumn HeaderText = Datum veröffentlicht DataField = PubDate
DataFormatString = {0: mmm yjyy}/>
<ASP: BoundColumn Headeltext = Preisdatenfeld = Preis
DataFormatString = {0: C}>
<poperty name = itemStyle>
<ASP: TableItemStyle Horizontalalign = rechts/>
</Property>
</ASP: BoundDColumn>
</Property>
<poperty name = Kopfstyle>
<ASP: TableItemStyle BackColor = Darkred Prognolor = White
font-black = true/>
</Property>
<poperty name = itemStyle>
<ASP: TableItemStyle Prognolor = DarkSlateBlue/>
</Property>
<poperty name = alternatingItemstyle>
<ASP: TableItemStyle BackColor = Beige/>
</Property>
</ASP: DataGrid>
Diese .aspx -Datei zeigte dieselbe DataGrid Control -Anweisung wie die vorherige Anweisung und legte verschiedene Stilattribute fest. Dies wird zu einer attraktiveren Darstellung führen. Es ist immer noch nicht erforderlich, Änderungen am Code vorzunehmen, und die Verwendung von Code, die anhand der gleichen Beispiele wie frühere Beispiele unterstützt werden.
Da es von WebControl erhalten wird, erbt die DataGrid Control -Attribute wie Breite, BackColor, BorderSyle und Font.name. Darüber hinaus bietet DataGrid Attribute wie CellPadding an, die spezifisch für die Tabelle sind. Diese Attribute dürfen Steuerelemente insgesamt anpassen.
In der Erklärung werden auch mehrere Projektstile angezeigt, wie z. B. Header -Stil und AlternatingItemStyle. Diese Stile steuern das Erscheinungsbild ihrer entsprechenden Elemente. Bitte beachten Sie, dass der Stil des Stils in diesem Beispiel angezeigt wird. Die alternativen Projekte entsprechen den Aussichten allgemeiner Projekte, da ihre Stile Kombinationen von AlternatingItemstyle und ItemStyle sind. Schließlich erläutert dieses Beispiel auch den Stil einer bestimmten Spalte durch den Text in der Spalte Right -to -Ausrichtungspreis.
Mit DataGrid können Sie auch den Textinhalt in seiner Zelle formatieren. Dies wird abgeschlossen, indem der Wert von DataFormatString -Eigenschaft von Grenze festgelegt wird. Die Spalte verwendet ihr Format, um den Zellinhalt von String.Format zu formatieren. Dieses Attribut kann mit dem Formatierungsart (z. B. Datum oder Währung) voreingestellt oder an Inhalte angehängt werden. Da die Formatierung die CultureInfo und die Anfragen der aktuellen Seite berücksichtigt, unterstützt es außerdem auch die Globalisierung. Wenn es kein angegebenes Format gibt, verwenden Sie die TOString -Methode dieses Wertes.
DataGrid4
DataGrid4 erklärt, wie die Auswahl in DataGrid verwendet wird, indem Sie das ausgewählte Ereignis bearbeiten.
Abbildung 7. Beispiele, die durch Erlaubnis des DataGrid -enthaltenden Elements erzeugt wurden
Test von DataGrid4.aspx:
<%@Page Language = C# src = datagrid4.cs inerits = modples.datagrid4Page%>
Elastisch
<ASP: DataGrid Runat = Server ID = Titelgrid
Autogeneratecolumns = false
Breite = 80%
backcolor = weiß
Borderbreite = 1PX BORDERSYLE = Feststoffzellpadding = 2 Zellspaziergang = 0
BorderColor = tan
Schriftname = Songstil Schriftgröße = 8pt
datakeyfield = title_id
OnSelectedExchanged = OnSelectExchangededesGrid>
<Poperty name = Spalten>
<ASP: ButtonColumn text = select command = select/>
<ASP: boundColumn headeltext = title datafield = title/>
<ASP: boundColumn headeltext = Autor datafield = au_name/>
<ASP: BoundColumn HeaderText = Datum veröffentlicht DataField = PubDate
DataFormatString = {0: mmm yjyy}/>
<ASP: BoundColumn Headeltext = Preisdatenfeld = Preis
DataFormatString = {0: C}>
<poperty name = itemStyle>
<ASP: TableItemStyle Horizontalalign = rechts/>
</Property>
</ASP: BoundDColumn>
</Property>
<poperty name = Kopfstyle>
<ASP: TableItemStyle BackColor = Darkred Prognolor = White
font-black = true/>
</Property>
<poperty name = itemStyle>
<ASP: TableItemStyle Prognolor = DarkSlateBlue/>
</Property>
<poperty name = alternatingItemstyle>
<ASP: TableItemStyle BackColor = Beige/>
</Property>
<poperty name = selectdItemStyle>
<ASP: TableItemStyle BackColor = PALEGOLDENROD FONT-BOLD = TRUE/>
</Property>
</ASP: DataGrid>
Elastisch
<ASP: Label Runat = Server ID = SelectInFolabel Font-Name = Song Style Font-Size = 8PT/>
In der .aspx -Datei wurde ein Ereignisverarbeitungsprogramm für das ausgewählte Ereignisereignis von DataGrid registriert. Dieses Vorfallverarbeitungsprogramm wird in einer von Code unterstützten Datei implementiert. Ein Schaltflächencolumn, der dem als "SELECT" hinzugefügten Spalten -Set hinzugefügt wurde, lässt DataGrid eine zusätzliche Spalte darstellen, die die Schaltfläche Auswahl für jedes Projekt enthält. Gleichzeitig ist SelectedItemStyle angegeben. Dieser Stil wird verwendet, um die Projekte von visuell zu unterscheiden. Schließlich wird das DataKeyfield -Attribut von DataGrid angegeben. Dieses Feld wird in der DataGrid Datakeys -Sammlung platziert, die in Dateien mit Codeunterstützung verwendet wird.
DataGrid4.cs:
Namespace -Beispiele {
Elastisch
Öffentliche Klasse DataGrid4Page: Seite {
Geschützte DataGrid -Titelgrid;
Geschützte Label -Searchinfolabel;
Public icollection gettitleslist () {
// Die Titelliste aus dem Datensatz von High -Geschwindigkeits -Cache im Anwendungsstatus rechnen.
Dataset titlesDataset = (Dataset) Anwendung [titlesDataset];
if (titlesDataset! = null) {
Return titlesDataset.tables [Titel] .DefaultView;
}
anders {
Null zurückkehren;
}
}
Private void loadtitlesgrid () {) {)
// Daten aus der Datenbank durchsuchen
iCollection titlesList = gettitlesList ();
// Stellen Sie die Datenquelle der Steuerung fest und setzen Sie ihre Auswahl zurück.
titlesGrid.dataSource = titlesList;
Titelgrid.SelectDIndex = -1;
// und lassen Sie die Steuerung diese Datenquelle verwenden, um ihr Projekt zu erstellen
titlesGrid.databind ();
// Ausgewählte Titelinformationen aktualisieren
UpdateSelecttitalInfo ();
}
Protected Override void Overad (eventArgs e) {{{{{{{{
Base.onload (e);
if (! ispostback) {
// Siehe diese Seite zum ersten Mal
loadTitlesGrid ();
}
}
// Verarbeitung von DataGrid's OnSelectIndIndExchanged Ereignis
Geschützte void onelectedIndexchangedtitlesGrid (Objektabsender,
EventArgs e) {
UpdateSelecttitalInfo ();
}
Private void updatesSeSelectTitiveInfo () {{) {
// Erhalten Sie den ausgewählten Index
int selindex = titlesGrid.SelectDIndex;
String seliieId = null;
String selectInfo;
if (selindex! = -1) {{{{{{{{{
// Zeigen Sie das Schlüsselfeld des ausgewählten Titels an
Seltitleid = (String) titlesGrid.data [selindex];
SelectionInfo = id aus ausgewählten Titel: + seltitleid;
}
anders {
selectInfo = kein Titel wird ausgewählt.;
}
selectInfolabel.Text = selectInfo;
}
}
}
Diese .cs -Datei enthält die Logik der Behandlung des ausgewählten Ereignisses und die Logik der ID des ausgewählten Titels bei DataGrid. DataGrid übernimmt das Befehlsereignis, das durch in seinem Projekt enthaltene Schaltflächen ausgelöst wird. Es erkennt den Standardbefehl "SELECT", wodurch seine SelectedIndex -Eigenschaft geändert wird, und löst diesen Vorfall aus, um den Code zu ändern, um den Benutzer zu benachrichtigen.
Im Prozess der Implementierung von Ereignisverarbeitungsprogrammen ruft der Beispielcode die Methode zur Aktualisierung von SelectTitleinfo auf. Diese Methode ist für die Anzeige von Informationen zum ausgewählten Buchtitel in diesem Beispiel die ID der ID. In einem realistischeren Schema kann diese ID verwendet werden, um eine Seite zu verknüpfen, um weitere Details zum ausgewählten Titel anzuzeigen.
ID wird durch Besuch der Datakeys -Sammlung abgerufen. Die Sammlung ist aufgrund des Datakeyfield -Attributs eingestellt. Stellen Sie es normalerweise als Hauptschlüsselwort oder andere Felder fest, die vom Haushalt identifiziert werden können, und verwenden Sie diese Informationen als Richtlinien in der Folge -up -Datenbankabfrage oder Filterdaten.
In diesem Beispiel wird angezeigt, wie Operationen weiter unterstützt werden können, z. B. die Auswahl von Objekten in der Datenquelle zusätzlich zu nur Objekten in der Datenquelle. DataGrid enthält Unterstützung für mehrere andere Funktionen (z. B. Sortieren, Paging, auf -Site -Redakteure und TemplateColumns). Diese spezifischen Merkmale überschreiten jedoch den Umfang der Diskussion dieses Artikels und werden in zukünftigen Artikeln erörtert.
Repeater, Datalist oder DataGrid?
Repeater, Datalist und DataGrid Control Shared Public Programming Modelle. Gleichzeitig ist jede Kontrolle konzipiert, um sich auf ein bestimmtes Schema zu konzentrieren. Dieser Abschnitt beschreibt die Funktion der Kontrollhierarchie und die Funktion jeder Steuerung sowie ein Beispiel für die typische Lösung, die jede Steuerung verwendet kann.
Wie Sie in der folgenden Klassenstruktur sehen können, ist Repeater eine kleine und leichte Kontrolle. Es erbt nur die Funktionen der grundlegenden Kontrollklasse, wie z. B. ID -Attribute und Sub -Control -Sets. Andererseits erben die Datalist -Steuerung und die DataGrid -Steuerung die WebControl -Funktion wie Stil- und Aussehensattribute.
Abbildung 8. Listenbindungssteuerung der Klassenebenestruktur LISTE
In Bezug auf Objektmodelle ist die Repeater -Steuerung die einfachste Kontrolle. Es ist auch die kleinste Datenbindungsregelung und im Grunde genommen unterschiedlich, dh es zwingt kein spezielles UI -Layout. Die endgültige Indikationsmethode folgt der Methode zum Generieren von Text. Diese Steuerung bietet keine gebaute Unterstützung für Stile und Aussehensattribute oder Verhaltensweisen. Es ist eine ausgezeichnete Wahl für eine Lösung, die vollständig kontrolliert werden muss.
Die Datalist -Steuerung ist ein Repeater, das gezwungen ist, das Spaltenlayout oder das Stream -Layout zu verwenden. Es erbt die in Webcontrol implementierten Erscheinungsattribute und fügt andere Stilattribute hinzu, die für die von ihm erstellten Elemente geeignet sind. Die Datalist -Steuerung beinhaltet auch die Unterstützung für seine Projektstandardvorgänge (z. B. Auswahl, Bearbeitung und Löschen). Es ist sehr geeignet für den Sequenzstrom der in einer Zeile oder Zeile verteilten Ebene oder vertikalen Projekte.
Die DataGrid -Steuerung ist gezwungen, das Layout oder das Leitungslayout zu verwenden. Ähnlich wie bei Datalist bietet diese Steuerung Stile und Erscheinungsmerkmale. Neben der Auswahl und Bearbeitung unterstützt DataGrid auch erweiterte Vorgänge bei der Sammlung des gesamten Projekts wie Seiten und Sortierungen. Einer der Hauptunterschiede zwischen DataGrid und Datalist besteht darin, dass DataGrid keine Vorlagenattribute enthält, dh das Projekt oder die Nicht -Template der DataGrid -Steuerung. Fügen Sie jedoch TemplateColumn zum DataGrid hinzu, um die Vorlage in einer bestimmten Spalte zu verwenden.
Die folgende Tabelle ist eine Zusammenfassung der Funktion, die durch die List -Bindungsregelung bereitgestellt wird.
Funktion Repeater Datalist DataGrid
Die Vorlage ist (erforderlich) oder in (erforderlichen) Spalten (optional)
Ist das Listenlayout?
Ist das Stream -Layout
Ist das Layout des Spaltenstils der Verteilung/Zeitung?
Ob die Stil- und Aussehenattribute sind
Wählen Sie, ob ja
Bearbeiten
Ist es gelöscht?
Keine Pagination
Ist es sortiert?
Verwandte Ressourcen
Angesichts der von Microsoft .NET Framework SDK veröffentlichten QuickStart -Beispiele gab es mehrere Beispiele für diese Steuerelemente und Beispiele, in denen die Daten zum Zugriff auf Daten mit XML und Webdiensten erläutert wurden. Das an das SDK beigefügte Dokument enthält die konzeptionellen Daten des relevanten Themas, z. B. das ASP+ -Seiten -Framework und die Serversteuerung sowie die Referenzbibliographie des Objektmodells als Teil der Steuerung dieses Rahmens.