Compartilhar via


LinqDataSource.AutoGenerateWhereClause Propriedade

Definição

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

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

Boolean

true se o LinqDataSource controle criar a cláusula Where; caso contrário, false. O padrão é false.

Implementações

Exemplos

O exemplo a seguir mostra um LinqDataSource controle com o AutoGenerateWhereClause conjunto como true. Um GridView controle é associado ao LinqDataSource controle para exibir os dados retornados da consulta. Um DropDownList controle é incluído que é preenchido com três valores. Um parâmetro é incluído na WhereParameters coleção com o conjunto de nomes ao Category, qual corresponde a uma das propriedades do objeto de dados. Sua ControlID propriedade é definida como a ID do DropDownList controle. O LinqDataSource controle cria automaticamente a Where propriedade para filtrar registros com base no valor selecionado pelo usuário no DropDownList controle. A consulta retorna os registros cuja Category propriedade corresponde ao valor que o usuário selecionou no DropDownList controle.

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

Comentários

Quando você define a AutoGenerateWhereClause propriedade como true, o LinqDataSource controle cria dinamicamente a cláusula Where dos parâmetros na WhereParameters coleção. Cada parâmetro que você adicionar à WhereParameters coleção deve ter sua Name propriedade definida como um valor que corresponda a uma propriedade no objeto de dados que está sendo 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 você fornecer mais de um parâmetro, os parâmetros serão vinculados a uma operação lógica AND . Parâmetros que contêm null ou um valor vazio não são incluídos na cláusula Where.

A cláusula gerada Where automaticamente só pode testar a igualdade e pode vincular parâmetros somente com a AND operação. Não defina a AutoGenerateWhereClause propriedade para true se você precisar adicionar uma condição que não teste a igualdade ou se precisar relacionar parâmetros com a OR operação. Você pode realizar essas tarefas definindo a AutoGenerateWhereClause propriedade e adicionando false espaços reservados na Where propriedade para cada parâmetro na WhereParameters coleção. Where Na propriedade, prefácio de cada nome de espaço reservado com o símbolo @.

Você não define a Where propriedade quando a AutoGenerateWhereClause propriedade é true, porque o analisador cria dinamicamente a cláusula Where. O LinqDataSource controle gera uma exceção se a AutoGenerateWhereClause propriedade for true e a Where propriedade tiver valores atribuídos.

Aplica-se a