Ein Datenquellen-Steuerelement interagiert mit datengebundenen Steuerelementen und verbirgt den komplexen Datenbindungsprozess. Hierbei handelt es sich um Tools, die Daten für datengebundene Steuerelemente bereitstellen und die Ausführung von Vorgängen wie Einfügen, Löschen und Aktualisieren unterstützen.
Jedes Datenquellensteuerelement umschließt einen speziellen Datenanbieter, der einer Datenbank, einer XML-Datei oder einer benutzerdefinierten Klasse zugeordnet ist, und hilft:
Verbindungen verwalten
Daten auswählen
Verwalten Sie Präsentationsaspekte wie Paging, Caching usw.
Daten manipulieren
In ASP.NET stehen zahlreiche Datenquellensteuerelemente zum Abrufen von Daten von einem SQL-Server, ODBC- oder OLE DB-Server, aus XML-Dateien und von Geschäftsobjekten zur Verfügung.
Basierend auf dem Datentyp können diese Steuerelemente in zwei Kategorien unterteilt werden:
Mehrschichtige Datenquellenkontrolle
Tabellenbasierte Datenquellenkontrolle
Die Datenquellensteuerelemente für hierarchische Daten sind:
XMLDataSource – Ermöglicht das Binden von XML-Dateien und Zeichenfolgen mit oder ohne Schemainformationen.
SiteMapDataSource – Ermöglicht die Bindung eines Anbieters, der Sitemap-Informationen bereitstellt.
Die für Tabellendaten verwendeten Datenquellensteuerelemente sind:
Datenquellenkontrolle | beschreiben |
---|---|
SqlDataSource | Es stellt eine Verbindung zu einem ADO.NET-Datenanbieter dar, der SQL-Daten zurückgibt, einschließlich Datenquellen, die über OLEDB und QDBC verfügbar sind. |
ObjectDataSource | Es ermöglicht die Bindung eines benutzerdefinierten .Net-Geschäftsobjekts, das Daten zurückgibt |
LinqdataSource | Es ermöglicht die Bindung der Ergebnisse von Linq-t0-SQL-Abfragen. (Nur von ASP.NET 3.5 unterstützt) |
AccessDataSource | Es stellt eine Verbindung zu einer Microsoft Access-Datenbank dar. |
Die Datenquellenansicht ist ein Objekt der DataSourceView-Klasse, die eine benutzerdefinierte Datenansicht darstellt, die für verschiedene Datenvorgänge wie Sortieren, Filtern usw. entwickelt wurde.
Die DataSourceView-Klasse wird als Basisklasse für alle Datenquellenansichtsklassen verwendet und definiert die Leistung der Datenquellensteuerung.
Die folgende Tabelle enthält die Eigenschaften der DataSourceView-Klasse:
Eigentum | beschreiben |
---|---|
CanDelete | Gibt an, ob das Löschen potenzieller Datenquellen zulässig ist. |
CanInsert | Gibt an, ob das Einfügen potenzieller Datenquellen zugelassen werden soll. |
CanPage | Gibt an, ob das Paging potenzieller Datenquellen zulässig ist. |
CanRetrieveTotalRowCount | Gibt an, ob die gesamten Zeileninformationen abgerufen werden können. |
CanSort | Gibt an, ob die Daten sortiert werden können. |
CanUpdate | Gibt an, ob Aktualisierungen für die potenzielle Datenquelle zulässig sind. |
Veranstaltungen | Ruft eine Liste von Ereignishandlern ab, die durch die Datenquellenansicht dargestellt werden. |
Name | Der Name der Ansicht. |
Die folgende Tabelle enthält die Methoden der DataSourceView-Klasse:
Verfahren | beschreiben |
---|---|
CanExecute | Bestimmen Sie, ob der angegebene Befehl ausgeführt werden kann. |
ExecuteCommand | Führen Sie den angegebenen Befehl aus. |
AusführenLöschen | Führt einen Löschvorgang für die vom DataSourceView-Objekt dargestellte Datenliste durch. |
AusführenEinfügen | Führt einen Einfügevorgang für die Datenliste durch, die durch ein DataSourceView-Objekt dargestellt wird. |
AusführenAuswählen | Rufen Sie eine Liste der Daten aus dem zugrunde liegenden Datenspeicher ab. |
AusführenUpdate | Führt einen Aktualisierungsvorgang für die vom DataSourceView-Objekt dargestellte Datenliste durch. |
Löschen | Führt einen Löschvorgang für die mit der Ansicht verknüpften Daten durch. |
Einfügen | Führt einen Einfügevorgang für die mit der Ansicht verknüpften Daten durch. |
Wählen | Gibt die abgefragten Daten zurück. |
Aktualisieren | Führt einen Aktualisierungsvorgang für die mit der Ansicht verknüpften Daten durch. |
OnDataSourceViewChanged | Lösen Sie das DataSourceViewChanged-Ereignis aus. |
RaiseUnsupportedCapabilitiesError | Wird von der RaiseUnsupportedCapabilitiesError-Methode aufgerufen, um die für den ExecuteSelect-Vorgang erforderlichen Funktionen mit den von der Ansicht unterstützten Funktionen zu vergleichen. |
Das SqlDataSource-Steuerelement stellt eine Verbindung zu einer zugehörigen Datenbank wie einer SQL Server- oder Oracle-Datenbank oder zu zugänglichen Daten über OLEDB oder Open Database Connectivity (ODBC) dar. Die Datenverbindung wird über zwei wichtige Eigenschaften abgeschlossen: ConnectionString und ProviderName.
Der folgende Codeausschnitt stellt die grundlegende Syntax des Steuerelements bereit:
<asp:SqlDataSource runat="server" ID="MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString='<%$ ConnectionStrings:LocalNWind %>' SelectionCommand= "SELECT * FROM EMPLOYEES" /><asp:GridView ID="GridView1" runat="server" DataSourceID="MySqlSource" />
Das Konfigurieren verschiedener Datenoperationen für die zugrunde liegenden Daten hängt von verschiedenen Eigenschaften (Eigenschaftssätzen) des Datenquellensteuerelements ab.
Die folgende Tabelle enthält den zugehörigen Eigenschaftensatz des SqlDataSource-Steuerelements, das die Programmierschnittstelle des Steuerelements bereitstellt:
Attributgruppe | beschreiben |
---|---|
DeleteCommand,DeleteParameters,DeleteCommandType | Ruft die SQL-Anweisung, die Parameter und den Typ der zu löschenden Zeilen in den zugrunde liegenden Daten ab oder legt diese fest. |
FilterExpression,FilterParameters | Ruft Datenfilterungszeichenfolgen und -parameter ab und legt diese fest. |
InsertCommand,InsertParameters,InsertCommandType | Ruft die SQL-Anweisung, die Parameter und den Typ der in die zugrunde liegenden Daten eingefügten Zeilen ab oder legt diese fest. |
SelectCommand, SelectParameters, SelectCommandType | Ruft die SQL-Anweisung, die Parameter und den Typ der aus den zugrunde liegenden Daten abgerufenen Zeilen ab oder legt diese fest. |
SortParameterName | Ruft den Namen eines Eingabeparameters ab, der von der gespeicherten Befehlsprozedur zum Sortieren der Daten verwendet wird, oder legt diesen fest. |
UpdateCommand,UpdateParameters,UpdateCommandType | Ruft die SQL-Anweisung, die Parameter und den Typ der in den zugrunde liegenden Daten aktualisierten Zeilen ab oder legt diese fest. |
Der folgende Codeausschnitt zeigt die Datenquellensteuerung, die zum Ausführen von Datenoperationen verwendet werden kann:
<asp:SqlDataSource runat="server" ID= "MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString=' <%$ ConnectionStrings:LocalNWind %>' SelectCommand= "SELECT * FROM EMPLOYEES" UpdateCommand= "UPDATE EMPLOYEES SET LASTNAME=@lame" DeleteCommand= "DELETE FROM EMPLOYEES WHERE EMPLOYEEID=@eid" FilterExpression= "EMPLOYEEID > 10"> ..... .....</asp:SqlDataSource>
Das ObjectDataSource-Steuerelement ermöglicht benutzerdefinierten Klassen, die Ausgabe ihrer Methoden mit datengebundenen Steuerelementen zu verbinden. Die Programmierschnittstelle dieser Klasse ist nahezu identisch mit der des SqlDataSource-Steuerelements.
Im Folgenden sind zwei wichtige Aspekte der Bindung von Kundenobjekten aufgeführt:
Eine bindbare Klasse sollte über einen Standardkonstruktor verfügen, zustandslos sein und über Methoden verfügen, die Semantiken zum Auswählen, Aktualisieren, Einfügen und Löschen abbilden.
Objekte müssen einzeln aktualisiert werden, Stapelvorgänge werden nicht unterstützt.
Schauen wir uns gleich ein Beispiel für die Verwendung dieses Steuerelements an. Die Student-Klasse ist eine Klasse, die mit einem Datenquellenobjekt verwendet wird. Diese Klasse hat drei Attribute: eine Studenten-ID, einen Namen und eine Stadt. Es verfügt über einen Standardkonstruktor und eine GetStudents-Methode zum Abrufen von Daten.
Schülerklasse:
public class Student{ public int StudentID { get; set; } public string Name { get; set; } public string City { get; set; } public Student() { } public DataSet GetStudents() { DataSet ds = new DataSet(); DataTable dt = new DataTable("Students"); dt.Columns.Add("StudentID", typeof(System.Int32)); dt.Columns.Add("StudentName", typeof(System.String)); dt.Columns.Add("StudentCity", typeof(System.String)); dt.Rows.Add(new object[] { 1, "MH Kabir", "Calcutta" }); dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" }); ds.Tables.Add(dt); return ds; }}
Führen Sie die folgenden Schritte aus, um die Verbindung an ein Datenquellenobjekt zu binden und die Daten abzurufen:
Erstellen Sie eine neue Webseite.
Fügen Sie dem Projektmappen-Explorer eine Klasse (Student.cs) hinzu, indem Sie mit der rechten Maustaste darauf klicken, eine Klassenvorlage hinzufügen und den obigen Code darin platzieren.
Richten Sie Methoden ein, damit eine Anwendung einen Verweis auf die Klasse verwenden kann.
Platzieren Sie ein Datenquellenkontrollobjekt im Webformular.
Konfigurieren Sie die Datenquelle, indem Sie das Objekt auswählen.
Wählen Sie Datenmethoden für verschiedene Datenoperationen. In diesem Beispiel gibt es nur eine Methode.
Platzieren Sie ein datengebundenes Steuerelement, z. B. eine Rasteransicht, auf der Seite und wählen Sie das Datenquellenobjekt als potenzielle Datenquelle aus.
Zu diesem Zeitpunkt sollte die Entwurfsansicht wie folgt aussehen:
Beim Ausführen des Projekts wird der hartcodierte Vorfahre in der Schülerklasse abgerufen.
Das AccessDataSource-Steuerelement stellt eine Verbindung zu einer Access-Datenbank dar. Es basiert auf dem SqlDataSource-Steuerelement und bietet eine einfachere Programmierschnittstelle. Der folgende Codeausschnitt stellt die grundlegende Syntax der Datenquelle bereit:
<asp:AccessDataSource ID="AccessDataSource1 runat="server" DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM [DotNetReferences]"></asp:AccessDataSource>
Das AccessDataSource-Steuerelement öffnet die Datenbank im schreibgeschützten Modus. Es kann jedoch auch zum Ausführen von Einfüge-, Aktualisierungs- oder Löschvorgängen verwendet werden. Dies wird mithilfe von ADO.NET-Befehlen und Parametersätzen erreicht.
Aktualisierungen sind für Access-Datenbanken in ASP.NET-Anwendungen problematisch, da es sich bei der Access-Datenbank um eine Nur-Text-Datenbank handelt und das Standardkonto der ASP.NET-Anwendung möglicherweise über Schreibberechtigungen für die Datenbankdateien verfügt.