Необходимо убедиться, что для параметра CancelSelectOnNullParameter в вашем SqlDataSource установлено значение false, а для параметра ConvertEmptyStringToNull установлено значение true для необходимого параметра. В разметке это должно выглядеть примерно так:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" CancelSelectOnNullParameter="false" SelectCommand="...">
<SelectParameters>
<asp:ControlParameter Name="..." ControlID="..." PropertyName="..." DbType="..." ConvertEmptyStringToNull="true"/>
...
</SelectParameters>
</asp:SqlDataSource>
Проблема начнется, если у вас будет более одного элемента управления, который может предоставить нулевое значение, и вы хотите, чтобы только один из них был нулевым. В этом случае вы должны установить для CancelSelectOnNullParameter значение true и использовать событие Selecting для добавления DBNull.Value:
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
if (String.IsNullOrEmpty(textBox.Text))
((IDbDataParameter)e.Command.Parameters["@name"]).Value = DBNull.Value;
}
Это должно позволить вам решить ваши проблемы.