Gewusst wie: Aktivieren des Filterns für das SqlDataSource-Steuerelement
Aktualisiert: November 2007
Mit dem SqlDataSource-Steuerelement können die Ergebnisse einer Abfrage gefiltert (sortiert oder ausgewählt) werden, ohne die Abfrage erneut durchführen zu müssen. Sie können beeinflussen, welche Daten von SqlDataSource nach einer durchgeführten Abfrage zur Verfügung gestellt werden, ohne zur Datenbank zurückzukehren. Fügen Sie dazu einem SqlDataSource-Steuerelement die Filterfunktion hinzu.
Dieses Thema veranschaulicht, wie eine Filterung für ein SqlDataSource-Steuerelement aktiviert wird. Datengebundene Steuerelemente, z. B. das GridView-Steuerelement, die an das SqlDataSource-Steuerelement gebunden sind, zeigen nur die gefilterten Ergebnisse an.
Beim Verwenden von Filtern müssen Sie das SqlDataSource-Steuerelement so festlegen, dass es Informationen in einem Datensatz wiedergibt und dessen Ergebnisse zwischenspeichert. Anschließend können Sie einen Filterausdruck festlegen, der als RowFilter-Eigenschaft auf ein DataView-Objekt angewendet wird, das dem SqlDataSource-Steuerelement zugrunde liegt.
Der Filter kann Parameter beinhalten, die auf Werten anderer Steuerelemente, Cookies, Sitzungsvariablen oder Abfragezeichenfolgen basieren. Wenn ein DropDownList-Steuerelement beispielsweise Namen von Städten enthält, können Sie die im DropDownList-Steuerelement ausgewählte Stadt als Filterparameter verwenden.
Hinweis: |
---|
Die Erstellung eines Filterausdrucks mit Parametern ist nicht mit der Erstellung einer parametrisierten SelectCommand-Eigenschaft und der Angabe von SelectParameters-Eigenschaftenwerten gleichzusetzen. Ein parametrisierter Filter wendet andere Ansichten auf die Daten eines zwischengespeicherten Datasets an. Ein parametrisierter Auswahlbefehl führt eine Abfrage der Datenquelle aus. |
So aktivieren Sie die Filterung für ein SqlDataSource-Steuerelement
Erstellen Sie ein SqlDataSource-Steuerelement mit einer gültigen Verbindungszeichenfolge und einer Auswahlanweisung. Weitere Informationen finden Sie unter Gewusst wie: Verbinden mit einer SQL Server-Datenbank mithilfe des SqlDataSource-Steuerelements (Visual Studio).
Legen Sie die DataSourceMode-Eigenschaft des SqlDataSource-Steuerelements auf DataSet fest.
Legen Sie die EnableCaching-Eigenschaft des SqlDataSource-Steuerelements auf true fest.
Die von der Abfrage zurückgegebenen Daten müssen zwischengespeichert werden, um die Filterung zu unterstützen.
Legen Sie die CacheDuration-Eigenschaft des SqlDataSource-Steuerelements auf die gewünschte Anzahl von Sekunden fest, für die die Daten zwischengespeichert werden sollen. Die Zeit, die Sie auswählen, hängt von der Anwendung ab.
Legen Sie die FilterExpression-Eigenschaft des Steuerelements auf einen Ausdruck fest, der die zurückzugebenden Daten angibt. Vergleichen Sie hierzu folgendes Beispiel:
country = 'Germany'
Informationen über die Syntax der Filterausdrücke finden Sie unter RowFilter.
Das SqlDataSource-Steuerelement mit aktivierter Filterung sieht in etwa so aus:
<asp:SqlDataSource ID="SqlDataSource1" DataSourceMode="DataSet" EnableCaching="true" Runat="server" SelectCommand="Select * From Customers" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" FilterExpression="country = 'Germany'"> </asp:SqlDataSource>
Wenn der Auswahlbefehl für eine Datenbank ausgeführt wird, zeigen die an dieses SqlDataSource-Steuerelement gebunden Steuerelemente nur gefilterte Ergebnisse an.
Filtern mit Parametern
Oftmals werden Sie die Ergebnisse einer Abfrage filtern möchten, die auf Werten basieren, die nur zur Laufzeit bekannt sind. Sie können Filterausdrücke erstellen, die Platzhalter für Parameter enthalten, und anschließend Filterparameter zum Füllen dieser Platzhalter definieren. Die Filterparameter können ihre Werte von Steuerelementen, Abfragezeichenfolgen, Cookies, Sitzungsvariablen, Profileigenschaften oder Form-Eigenschaftenwerten beziehen.
So filtern Sie mit Parametern ein SqlDataSource-Steuerelement
Legen Sie die FilterExpression-Eigenschaft des SqlDataSource-Steuerelements auf einen Ausdruck fest, der einen Platzhalter für den Filterparameterwert beinhaltet. Die Platzhalter verwenden die Syntax {n}, wobei n die sequenzielle Reihenfolge der Parameter angibt.
Die folgenden Beispiele beschreiben parametrisierte Filterausdrücke. Im zweiten Beispiel sind mehrere Parameterplatzhalter enthalten.
FilterExpression="category = '{0}'" FilterExpression="country = '{0}' AND city = '{1}'"
Erstellen Sie ein FilterParameters-Element als ein untergeordnetes Element des SqlDataSource-Elements. Fügen Sie für jeden Filterparameterplatzhalter ein Element eines der folgenden Typen hinzu:
Das folgende Beispiel veranschaulicht die Erstellung eines Filterparameters, der seine Werte von einem DropDownList-Steuerelement bezieht:
<FilterParameters> <asp:ControlParameter Name="CategoryList" ControlID="DropDownList1" PropertyValue="SelectedValue" /> </FilterParameters>
Hinweis: Die Name-Eigenschaft für den Parameter ist erforderlich. Parameter werden Platzhaltern in sequenzieller Reihenfolge zugeordnet und nicht anhand der Namen.
Das folgende Beispiel veranschaulicht ein vollständiges SqlDataSource-Steuerelement mit parametrisiertem Filter:
<asp:SqlDataSource ID="SqlDataSource1" EnableCaching="true" DataSourceMode="DataSet" Runat="server" SelectCommand="Select * from Customers" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>" FilterExpression="country = '{0}'"> <FilterParameters> <asp:ControlParameter Name="countryparam" ControlID="DropDownList1" PropertyName="SelectedValue" /> </FilterParameters> </asp:SqlDataSource>