ho una GV e 2 DDL.
queste 2 DDL fungono da filtro per la gv.
siccome i filtri possono essere anche tutti e 2 mi rimane scomodo fare diverse SP (in totale sarebbereo 4).
allora ho pensato di fare una cosa del genere:
codice:
ALTER Procedure [dbo].[TNW_select_files_deploy_siti]
@descrizione_ip varchar(64),
@stato tinyint

As
IF @descrizione_ip = '*' AND @stato = 60
	SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP
ELSE IF @descrizione_ip != '*' AND @stato = 60
	SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP 
	WHERE siti.descrizione = @descrizione_ip
ELSE IF @descrizione_ip = '*' AND @stato != 60
	SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP 
	WHERE stato = @stato
ELSE 
	SELECT file_deploy_sito#,stato,siti.descrizione AS Expr1,files_deploy_siti.IP AS Expr2,data_ora_trasferimento FROM files_deploy_siti INNER JOIN siti ON files_deploy_siti.IP=siti.IP 
	WHERE siti.descrizione = @descrizione_ip AND stato = @stato
funziona ma il problema è che il secondo parametro è di tipo tinyint, ma ha come valore iniziale un * e poi i numeri estratti dal db.
io per ora ho agito così:
codice:
<asp:ListItem Selected="True" Value="60">*</asp:ListItem>
e così richiamo il metodo nell'objectdata source:
codice:
        public static DataSet gvFilesSiti(string descrizione, byte stato)
        {
            DataSet ds = null;
            SqlDataAdapter adapter = null;
            SqlCommand cmd = null;
            try
            {
                conn.Open();
                cmd = new SqlCommand("TNW_select_files_deploy_siti", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@descrizione_ip", descrizione);
                cmd.Parameters.AddWithValue("@stato", stato);
                adapter = new SqlDataAdapter(cmd);
                ds = new DataSet();
                adapter.Fill(ds);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                ds.Dispose();
                adapter.Dispose();
                conn.Close();
            }
            return ds;
        }
capite bene che nn è il migliore modo di procedere, perchè un giorno 60 potrebbe diventare un valore nel db.
come posso rimediare secondo voi??