LinqDataSource.AutoGenerateWhereClause Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.