Estava eu dando manutenção em uma página de uma aplicação construída em ASP.NET 2.0, onde em um relatório que, dado uma consulta utilizando o controle SqlDataSource e seus devidos parametros, é executado uma Stored Procedure dentro de uma base de dados SQL Server e, o result-set é atribuído à um controle DataList no WebForm.
Até então tudo sem problemas e, o pior (para muitos, “o melhor”), sem nenhuma linha de código de servidor (VB.NET ou C#) escrita no CodeBehind. O problema começou quando defini para True a propriedade ConvertEmptyStringToNull de alguns parametros que, capturam os valores de controles do WebForm (como TextBox) para realizar a consulta. Estando essa propriedade definida como True, os parametros que não tiverem seus valores informados, serão convertidos em NULL e, consequentemente, enviados para a query ou Stored Procedure ser executada.
A partir daí as coisas deixaram de funcionar. Fiquei procurando, achando que tinha algo errado no próprio DataList e, mesmo através do Profiler do SQL Server, via que a Stored Procedure não era executada. Depois de algum tempo analisando as propriedades do controle SqlDataSource, vi que existe uma propriedade chamada CancelSelectOnNullParameter que, por padrão é definida como True e, como o próprio nome diz, se existir algum parametro nulo, a query/Stored Procedure não é executada.