LinqDataSource.AutoGenerateWhereClause Propriedade

Definição

Obtém ou define um valor que indica se o controlo LinqDataSource cria dinamicamente uma cláusula Where com base nos valores definidos na WhereParameters coleção.

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

Valor de Propriedade

true se o LinqDataSource controlo criará a cláusula Where ; caso contrário, false. A predefinição é false.

Implementações

Exemplos

O exemplo seguinte mostra um LinqDataSource controlo com o AutoGenerateWhereClause conjunto de .true Um GridView controlo está ligado ao LinqDataSource controlo para mostrar os dados devolvidos da consulta. Inclui um DropDownList controlo que é preenchido com três valores. Um parâmetro é incluído na WhereParameters coleção com o nome definido Category, que corresponde a uma das propriedades do objeto de dados. A sua ControlID propriedade está definida para o ID do DropDownList controlo. O LinqDataSource controlo cria automaticamente a Where propriedade para filtrar registos com base no valor que o utilizador seleciona do DropDownList controlo. A consulta devolve os registos cuja Category propriedade corresponde ao valor que o utilizador selecionou no DropDownList controlo.

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

Observações

Quando defines a AutoGenerateWhereClause propriedade para true, o LinqDataSource controlo cria dinamicamente a cláusula Where a partir dos parâmetros na WhereParameters coleção. Cada parâmetro que adicionar à WhereParameters coleção deve ter Name a sua propriedade definida com um valor que corresponda a uma propriedade no objeto de dados que está a ser consultado. A cláusula Where gerada automaticamente verificará se o valor especificado na WhereParameters coleção é igual ao valor da propriedade correspondente no objeto de dados. Se fornecer mais do que um parâmetro, os parâmetros estão ligados a uma operação lógica AND . Parâmetros que contêm null ou um valor vazio não estão incluídos na cláusula Where.

A cláusula gerada Where automaticamente só pode testar a igualdade e pode ligar parâmetros apenas com a AND operação. Não defina a AutoGenerateWhereClause propriedade se true tiver de adicionar uma condição que não teste a igualdade ou se tiver de relacionar parâmetros com a OR operação. Pode realizar estas tarefas definindo a AutoGenerateWhereClause propriedade como false e adicionando marcadores de Where posição para cada parâmetro da WhereParameters coleção. Na Where propriedade, introduza cada nome provisório com o símbolo @.

Não defines a Where propriedade quando a AutoGenerateWhereClause propriedade é true, porque o analisador cria dinamicamente a cláusula Where . O LinqDataSource controlo lança uma exceção se a AutoGenerateWhereClause propriedade for true e a Where propriedade for atribuída a valores.

Aplica-se a