LinqDataSource.AutoGenerateWhereClause Proprietà
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che indica se il controllo LinqDataSource crea dinamicamente una clausola Where in base ai valori definiti nell'insieme 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
true
se il controllo LinqDataSource crea la clausola Where; in caso contrario, false
. Il valore predefinito è false
.
Nell'esempio seguente viene illustrato un LinqDataSource controllo con il AutoGenerateWhereClause set su true
. Un GridView controllo è associato al LinqDataSource controllo per visualizzare i dati restituiti dalla query. È incluso un DropDownList controllo popolato con tre valori. Un parametro è incluso nella WhereParameters raccolta con il nome impostato su Category,
cui corrisponde una delle proprietà dell'oggetto dati. La proprietà ControlID è impostata sull'ID del DropDownList controllo. Il LinqDataSource controllo crea automaticamente la Where proprietà per filtrare i record in base al valore selezionato dall'utente dal DropDownList controllo. La query restituisce i record la cui Category
proprietà corrisponde al valore selezionato dall'utente dal DropDownList controllo.
<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>
Quando si imposta la proprietà su true
, il LinqDataSource controllo crea dinamicamente la AutoGenerateWhereClause clausola Where dai parametri dell'insiemeWhereParameters. Ogni parametro aggiunto alla raccolta deve avere la relativa Name proprietà impostata su un valore che corrisponde a una proprietà nell'oggetto dati sottoposto a WhereParameters query. La clausola Where generata automaticamente verificherà se il valore specificato nella WhereParameters raccolta equivale al valore della proprietà corrispondente nell'oggetto dati. Se si specificano più parametri, i parametri sono collegati a un'operazione logica AND
. I parametri che contengono null
o un valore vuoto non sono inclusi nella clausola Where.
La clausola generata Where automaticamente può testare solo per l'uguaglianza e può collegare i parametri solo con l'operazione AND
. Non impostare la AutoGenerateWhereClause proprietà su true
se è necessario aggiungere una condizione che non verifica l'uguaglianza o se è necessario correlare i parametri con l'operazione OR
. È possibile eseguire queste attività impostando la AutoGenerateWhereClause proprietà su false
e aggiungendo segnaposto nella Where proprietà per ogni parametro della WhereParameters raccolta. Where Nella proprietà prefazione di ogni nome segnaposto con il simbolo @.
Non si imposta la proprietà quando la Where AutoGenerateWhereClause proprietà è true
, perché il parser crea dinamicamente la clausola Where. Il LinqDataSource controllo genera un'eccezione se la AutoGenerateWhereClause proprietà è true
e la Where proprietà viene assegnata.