Share via


LinqDataSource.AutoGenerateWhereClause Propiedad

Definición

Obtiene o establece un valor que indica si el control LinqDataSource crea dinámicamente una cláusula Where según los valores definidos en la colección 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 de propiedad

Boolean

Es true si el control LinqDataSource va a crear la cláusula Where; de lo contrario, es false. De manera predeterminada, es false.

Implementaciones

Ejemplos

En el ejemplo siguiente se muestra un LinqDataSource control con el AutoGenerateWhereClause establecido en true. Un GridView control se enlaza al LinqDataSource control para mostrar los datos que se devuelven de la consulta. Se incluye un DropDownList control que se rellena con tres valores. Un parámetro se incluye en la WhereParameters colección con el nombre establecido en el Category, que coincide con una de las propiedades del objeto de datos. Su ControlID propiedad se establece en el identificador del DropDownList control. El LinqDataSource control crea automáticamente la Where propiedad para filtrar los registros en función del valor que el usuario selecciona en el DropDownList control. La consulta devuelve los registros cuya Category propiedad coincide con el valor seleccionado por el usuario del DropDownList control.

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

Comentarios

Al establecer la AutoGenerateWhereClause propiedad trueen , el LinqDataSource control crea dinámicamente la cláusula Where a partir de los parámetros de la WhereParameters colección. Cada parámetro que agregue a la WhereParameters colección debe tener su Name propiedad establecida en un valor que coincida con una propiedad en el objeto de datos que se está consultando. La cláusula Where generada automáticamente comprobará si el valor especificado en la WhereParameters colección es igual al valor de la propiedad coincidente en el objeto de datos. Si proporciona más de un parámetro, los parámetros se vinculan con una operación lógica AND . Los parámetros que contienen null o un valor vacío no se incluyen en la cláusula Where.

La cláusula generada Where automáticamente solo puede probar la igualdad y solo puede vincular parámetros con la AND operación. No establezca la AutoGenerateWhereClause propiedad true en si tiene que agregar una condición que no pruebe la igualdad o si tiene que relacionar parámetros con la OR operación. Puede realizar estas tareas estableciendo la AutoGenerateWhereClause propiedad false en y agregando marcadores de posición en la Where propiedad para cada parámetro de la WhereParameters colección. En la Where propiedad , antepone cada nombre de marcador de posición con el símbolo @ .

No establece la Where propiedad cuando la AutoGenerateWhereClause propiedad es true, porque el analizador crea dinámicamente la cláusula Where. El LinqDataSource control produce una excepción si la AutoGenerateWhereClause propiedad es true y la Where propiedad tiene valores asignados.

Se aplica a