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:
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>
Una gridview con un ObjectDataSource che prende come parametri questi due controlli:
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>
Ed ecco la funzione che esegue la chiamata sul DB:
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 puoi vedere, la query è molto semplice e senza logica. Quello che devi semplicemente controllare è il valore dei parametri che passi.
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