ahhh! ci sono quasi!!
ho solo un piccolo problema.
ti prendo questo come esempio dove c'è solo una DDL come filtro.
questa è la DDL
codice:
                <asp:DropDownList ID="ddlDurata" runat="server" OnDataBound="RowDataBound" AppendDataBoundItems="True"
                    AutoPostBack="True" EnableViewState="False" DataTextField="durata_spot" DataValueField="durata_spot"
                    DataSourceID="objDurata">
                    <asp:ListItem Selected="True" Value="">*</asp:ListItem>
                </asp:DropDownList>
qui faccio un select Distinct e i valori sono:
-* (quello messo manuale)
-0
-1
-4

il problema è che quando clicco sullo zero il filtro nn viene applicato.
questo il resto che ho fatto:
codice:
        public static DataSet gvAudioSource(int eraser)
        {
            DataSet ds = null;
            SqlDataAdapter adapter = null;
            SqlCommand cmd = null;
            try
            {
                conn.Open();
                cmd = new SqlCommand("TNW_select_audio", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@eraser", eraser != 0 ? eraser : (object)DBNull.Value);
                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;
        }
codice:
        <asp:ObjectDataSource ID="objAudio" runat="server" SelectMethod="gvAudioSource" TypeName="TNWDB.Library">
            <SelectParameters>
                <asp:ControlParameter ControlID="ddlEraser" Name="eraser" PropertyName="SelectedValue"
                    Type="Int32" DefaultValue="" />
            </SelectParameters>
        </asp:ObjectDataSource>
codice:
@eraser int
AS
SELECT * FROM audio
WHERE (eraser = @eraser OR @eraser is null)
io penso che il problema sia nel metodo:
cmd.Parameters.AddWithValue("@eraser", eraser != 0 ? eraser : (object)DBNull.Value);

qua gli imposto come condizione: eraser != 0.
però può essere zero.
se qua gli metto -1 come devo cambiare il tutto?