io userei un altro approccio.
Non ho capito molto bene perché usi il valore "60" come valore iniziale per lo stato, inoltre farei un controllo dei parametri prima di passarli alla SP TNW_select_files_deploy_siti.
Cosa utilizzi per leggere i dati della GV? Immagino un ObjectDataSource.
Io ti propongo una possibile soluzione come esempio è la tabella impiegati di Northwind con 2 filtri:
due DDL con valore iniziale vuoto:
Una gridview con un ObjectDataSource che prende come parametri questi due controlli:codice:<asp:DropDownList ID="Cities" runat="server" DataSourceID="CitiesDS" AutoPostBack="true" DataTextField="Value" DataValueField="Key" AppendDataBoundItems="true"> <asp:ListItem Text="" /> </asp:DropDownList> <asp:DropDownList ID="Countries" runat="server" DataSourceID="CountriesDS" AutoPostBack="true" DataTextField="Value" DataValueField="Key" AppendDataBoundItems="true"> <asp:ListItem Text="" /> </asp:DropDownList>
Ed ecco la funzione che esegue la chiamata sul DB:codice:<asp:ObjectDataSource ID="productsDataSource" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="getImpiegati" TypeName="Logic.Utility" > <SelectParameters> <asp:ControlParameter ControlID="Cities" Name="City" PropertyName="SelectedValue" Type="String" DefaultValue="" /> <asp:ControlParameter ControlID="Countries" Name="Country" PropertyName="SelectedValue" Type="String" DefaultValue="" /> </SelectParameters> </asp:ObjectDataSource>
Come puoi vedere, la query è molto semplice e senza logica. Quello che devi semplicemente controllare è il valore dei parametri che passi.codice:public DataTable getImpiegati(string city, string country) { string sSQL = @"SELECT EmployeeID, LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, ReportsTo, PhotoPath FROM [Employees] where (City=@city or @city is null) and (Country=@country or @country is null)"; SqlParameter par1 = new SqlParameter("city", SqlDbType.VarChar); SqlParameter par2 = new SqlParameter("country", SqlDbType.VarChar); par1.Value = (!string.IsNullOrEmpty(city) ? city : (object)DBNull.Value); par2.Value = (!string.IsNullOrEmpty(country) ? country : (object)DBNull.Value); return new DBHelper().getDataTable(sSQL, new SqlParameter[] { par1, par2 }); }
Come vedi dal codice, io preparo 2 parametri a NULL (DBNull.Value).
Poi assegno un valore se ne esiste uno passato dalle DropDownList.
Io ho usato due parametri stringa, ma per un int la cosa è equivalente (puoi scegliere il valore -1 come valore iniziale se ti torna meglio, ma non 60 :) )
Spero che questo ti possa aiutare.
___________________________________________
P.S.: dai un voto al mi bimbo, grazie
http://castingbambino.benetton.com/k...6-nicola-luigi
Ciao

Rispondi quotando