Freigeben über


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

  1. 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).

  2. Legen Sie die DataSourceMode-Eigenschaft des SqlDataSource-Steuerelements auf DataSet fest.

  3. 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.

  4. 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.

  5. 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

  1. 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}'"
    
  2. 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>
    

Siehe auch

Konzepte

Zwischenspeichern von Daten mit Datenquellensteuerelementen