将SqlDataSource参数设置为null

时间:2016-02-29 19:11:43

标签: asp.net

如何将传递给SqlDataSource的参数设置为null?我有下面的代码,其中参数“@ var1”是从TextBox设置的。但是,如果未定义该值,则需要将“@ var1”设置为null,以使coalesce返回true。

有没有办法做到这一点,还是我以错误的方式去做?

我还尝试设置DefaultValue="null"dsABC.SelectParameters["@var1"]=null,这两者都导致“输入字符串格式不正确”错误。

   <asp:SqlDataSource ID="dsABC" runat="server" ConnectionString="<%$ ConnectionStrings:abc123 %>" 
   SelectCommand=" SELECT   col1, col2, col3                        
                   FROM table1 as T1
                   WHERE   COALESCE(@var1, T.ID) = T.ID">
     <SelectParameters>
        <asp:ControlParameter Name="var1" ControlID="inputA" PropertyName="Value" DefaultValue="0" Type="Int16" />
     </SelectParameters>  
   </asp:SqlDataSource>

1 个答案:

答案 0 :(得分:3)

添加 ConvertEmptyStringToNull CancelSelectOnNullParameter 属性。第一个参数在空时将参数设置为null,第二个参数允许查询运行(默认行为是不运行带有null参数的查询)。

       <SelectParameters>
            <asp:ControlParameter Name="var1" ControlID="inputA" PropertyName="Value" DefaultValue="0" Type="Int16"
 ConvertEmptyStringToNull="true" 
CancelSelectOnNullParameter="false"  />
         </SelectParameters>