LinqDataSource.AutoGenerateWhereClause 属性

定义

获取或设置一个值,该值指示 LinqDataSource 控件是否基于 WhereParameters 集合中定义的值来动态创建 Where 子句。

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

属性值

Boolean

如果 LinqDataSource 控件将创建 Where 子句,则为 true;否则为 false。 默认值为 false

实现

示例

The following example shows a LinqDataSource control with the AutoGenerateWhereClause set to true. 控件 GridView 绑定到 LinqDataSource 控件以显示从查询返回的数据。 包含一个 DropDownList 用三个值填充的控件。 参数包含在集合中 WhereParameters ,其名称集 Category, 与数据对象的属性之一匹配。 其 ControlID 属性设置为控件的 DropDownList ID。 该LinqDataSource控件根据用户从DropDownList控件中选择的值自动创建Where用于筛选记录的属性。 查询返回其 Category 属性与用户从控件中选择的值匹配的 DropDownList 记录。

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

注解

将属性true设置为AutoGenerateWhereClause时,控件LinqDataSource将从集合中的WhereParameters参数动态创建 Where 子句。 添加到 WhereParameters 集合的每个参数都必须将其 Name 属性设置为与要查询的数据对象中的属性匹配的值。 自动生成的 Where 子句将检查集合中指定的 WhereParameters 值是否等于数据对象中匹配属性的值。 如果提供多个参数,参数将链接到逻辑 AND 操作。 包含 null 或空值的参数不包括在 Where 子句中。

自动生成 Where 的子句只能测试相等性,并且只能将参数与 AND 操作链接。 如果必须添加不测试相等的条件,或者必须将参数与操作关联,请不要将属性true设置为AutoGenerateWhereClauseOR属性。 可以通过将AutoGenerateWhereClause属性设置为false集合中WhereParameters每个参数的属性并添加占位符Where来完成这些任务。 在属性中 Where ,用 @ 符号开头每个占位符名称。

当属性为trueAutoGenerateWhereClause,不会设置Where该属性,因为分析器动态创建 Where 子句。 如果AutoGenerateWhereClause属性为true属性且属性已分配值,Where控件LinqDataSource将引发异常。

适用于