LinqDataSource.AutoGenerateWhereClause Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob das LinqDataSource-Steuerelement anhand von in der WhereParameters-Auflistung definierten Werten dynamisch eine Where-Klausel erstellt, oder legt diesen fest.

public:
 property bool AutoGenerateWhereClause { bool get(); void set(bool value); };
public bool AutoGenerateWhereClause { get; set; }
member this.AutoGenerateWhereClause : bool with get, set
Public Property AutoGenerateWhereClause As Boolean

Eigenschaftswert

Boolean

true, wenn das LinqDataSource-Steuerelement die Where-Klausel erstellt, andernfalls false. Der Standardwert ist false.

Implementiert

Beispiele

Das folgende Beispiel zeigt ein LinqDataSource Steuerelement mit dem AutoGenerateWhereClause Satz auf true. Ein GridView Steuerelement ist an das LinqDataSource Steuerelement gebunden, um die Daten anzuzeigen, die aus der Abfrage zurückgegeben werden. Ein DropDownList Steuerelement ist enthalten, das mit drei Werten gefüllt ist. Ein Parameter wird in der Auflistung mit dem WhereParameters Namen festgelegt, auf Category, den eine der Eigenschaften des Datenobjekts übereinstimmt. Die ControlID Eigenschaft wird auf die ID des DropDownList Steuerelements festgelegt. Das LinqDataSource Steuerelement erstellt automatisch die Where Eigenschaft, um Datensätze basierend auf dem Wert zu filtern, den der Benutzer aus dem DropDownList Steuerelement auswählt. Die Abfrage gibt die Datensätze zurück, Category deren Eigenschaft dem Wert entspricht, den der Benutzer aus dem DropDownList Steuerelement ausgewählt hat.

<asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server">
    <asp:ListItem Value="Sports"></asp:ListItem>
    <asp:ListItem Value="Garden"></asp:ListItem>
    <asp:ListItem Value="Auto"></asp:ListItem>
</asp:DropDownList>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    AutoGenerateWhereClause="true"
    ID="LinqDataSource1" 
    runat="server">
    <WhereParameters>
        <asp:ControlParameter 
            Name="Category" 
            ControlID="DropDownList1" 
            Type="String" />
    </WhereParameters>
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>
<asp:DropDownList AutoPostBack="true" ID="DropDownList1" runat="server">
    <asp:ListItem Value="Sports"></asp:ListItem>
    <asp:ListItem Value="Garden"></asp:ListItem>
    <asp:ListItem Value="Auto"></asp:ListItem>
</asp:DropDownList>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    AutoGenerateWhereClause="true"
    ID="LinqDataSource1" 
    runat="server">
    <WhereParameters>
        <asp:ControlParameter 
            Name="Category" 
            ControlID="DropDownList1" 
            Type="String" />
    </WhereParameters>
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>

Hinweise

Wenn Sie die Eigenschaft auf truefestlegen, erstellt das LinqDataSource Steuerelement dynamisch die AutoGenerateWhereClause Where-Klausel aus den Parametern in der WhereParameters Auflistung. Jeder Parameter, den Sie der WhereParameters Auflistung hinzufügen, muss Name auf einen Wert festgelegt sein, der einer Eigenschaft im Datenobjekt entspricht, das abgefragt wird. Die automatisch generierte Where-Klausel überprüft, ob der in der WhereParameters Auflistung angegebene Wert dem Wert der übereinstimmenden Eigenschaft im Datenobjekt entspricht. Wenn Sie mehrere Parameter bereitstellen, werden die Parameter mit einem logischen AND Vorgang verknüpft. Parameter, die einen leeren Wert enthalten null oder einen leeren Wert enthalten, sind in der Where-Klausel nicht enthalten.

Die automatisch generierte Where Klausel kann nur für Gleichheit getestet und Parameter nur mit dem AND Vorgang verknüpft werden. Legen Sie die AutoGenerateWhereClause Eigenschaft nicht fest, wenn Sie eine Bedingung true hinzufügen müssen, die nicht auf Gleichheit getestet wird, oder wenn Sie Parameter mit dem OR Vorgang verknüpfen müssen. Sie können diese Aufgaben ausführen, indem Sie die AutoGenerateWhereClause Eigenschaft auf die Eigenschaft festlegen und Platzhalter in der Eigenschaft false für jeden Parameter in der Where WhereParameters Auflistung hinzufügen. Stellen Sie in der Eigenschaft jeden Platzhalternamen mit dem Where @-Symbol vor.

Sie legen die Eigenschaft nicht fest, wenn die AutoGenerateWhereClause Eigenschaft lautettrue, da der Parser dynamisch die Where Where-Klausel erstellt. Das LinqDataSource Steuerelement löst eine Ausnahme aus, wenn die Eigenschaft ist und die AutoGenerateWhereClause Where Eigenschaft true Werte zugewiesen wird.

Gilt für