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?