Udostępnij za pośrednictwem


LinqDataSource.AutoGenerateWhereClause Właściwość

Definicja

Pobiera lub ustawia wartość wskazującą, czy LinqDataSource kontrolka dynamicznie tworzy klauzulę Where na podstawie wartości zdefiniowanych w kolekcji 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

Wartość właściwości

Boolean

true jeśli kontrolka utworzy klauzulę LinqDataSource Where; w przeciwnym razie false. Wartość domyślna to false.

Implementuje

Przykłady

W poniższym przykładzie przedstawiono kontrolkę z ustawioną wartością LinqDataSource AutoGenerateWhereClause true. Kontrolka GridView jest powiązana z kontrolką LinqDataSource , aby wyświetlić dane zwracane z zapytania. Uwzględniona jest kontrolka DropDownList wypełniona trzema wartościami. Parametr jest uwzględniony w kolekcji WhereParameters z ustawioną Category, nazwą zgodną z jedną z właściwości obiektu danych. Jego ControlID właściwość jest ustawiona na identyfikator kontrolki DropDownList . Kontrolka LinqDataSource automatycznie tworzy Where właściwość do filtrowania rekordów na podstawie wartości wybranej przez użytkownika z kontrolki DropDownList . Zapytanie zwraca rekordy, których Category właściwość odpowiada wartości wybranej przez użytkownika z kontrolki 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>

Uwagi

Po ustawieniu właściwości na truewartość kontrolka LinqDataSource AutoGenerateWhereClause dynamicznie tworzy klauzulę Where z parametrów w kolekcjiWhereParameters. Każdy parametr dodawany do WhereParameters kolekcji musi mieć jego Name właściwość ustawioną na wartość zgodną z właściwością obiektu danych, którego dotyczy zapytanie. Automatycznie wygenerowana klauzula Where sprawdzi, czy wartość określona w kolekcji jest równa wartości pasującej właściwości w WhereParameters obiekcie danych. Jeśli podasz więcej niż jeden parametr, parametry są połączone z operacją logiczną AND . Parametry zawierające null lub puste nie są uwzględniane w klauzuli Where.

Automatycznie wygenerowana Where klauzula może testować tylko pod kątem równości i może łączyć parametry tylko z operacją AND . Nie ustawiaj AutoGenerateWhereClause właściwości na true , jeśli musisz dodać warunek, który nie sprawdza równości lub jeśli musisz powiązać parametry z operacją OR . Te zadania można wykonać, ustawiając AutoGenerateWhereClause właściwość na false i dodając symbole zastępcze we Where właściwości dla każdego parametru w kolekcji WhereParameters . Where We właściwości wstępnie wyprzedaj każdą nazwę symbolu zastępczego z symbolem @.

Właściwość nie jest ustawiana Where , gdy AutoGenerateWhereClause właściwość to true, ponieważ analizator dynamicznie tworzy klauzulę Where. Kontrolka LinqDataSource zgłasza wyjątek, jeśli AutoGenerateWhereClause właściwość jest true i Where właściwość ma przypisane wartości.

Dotyczy