Ciao,
al Page_Load, componi dinamicamente il SelectCommand e aggiungi il SelectParameter, a seconda che la chiave SubCat sia presente o meno in querystring.
Nel tuo post hai menzionato un errore, che cosa dice? E' strano perché se anche uno solo dei parametri fosse null, il SqlDataSource non effettuerebbe la selezione.
In alternativa, se volessi risolvere il problema in maniera dichiarativa, potresti ingegnarti così:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
SelectCommand="SELECT *
FROM Table
WHERE SubCategoryID=IsNull(@SubCategoryID, SubCategoryID)"
ConnectionString="<%$ ConnectionStrings:NameDB %>"
DataSourceMode="DataSet" CancelSelectOnNullParameter="false">
<SelectParameters>
<asp:QueryStringParameter Name="SubCategoryID" QueryStringField="SubCat" Type="String" ConvertEmptyStringToNull="true" />
</SelectParameters>
</asp:SqlDataSource>
Qui puoi notare alcune cose:
- L'attributo CancelSelectOnNullParameter="false" sul SqlDataSource gli farà eseguire il SelectCommand anche in mancanza della chiave SubCat.
- Il SelectCommand è stato cambiato in modo da supportare anche eventuali valori null. In quel caso, verranno restituiti tutti i record (la funzione IsNull restituisce il secondo parametro se il primo è null)
- Sul QueryStringParameter ho messo ConvertEmptyStringToNull="true", così da Gestire anche il caso in cui SubCat dovesse essere fornita vuota.
ciao
Modificato da BrightSoul il 28 giugno 2012 22.23 -