参考我刚刚提出的这个问题 - SQL - Select all when filter value is empty - 似乎由于某种原因,空的TextBox
的值没有被送到SQL Server作为NULL,因为它必定是。
有关如何解决此问题的任何想法?
答案 0 :(得分:16)
空文本框将包含string.Empty
,而不是null
。
物业价值
类型:System.String
TextBox控件中显示的文本。 默认为空字符串(“”)。
如果您想确保它以null
的身份转到数据库,请在以下路径转换:
string value = !string.IsNullOrEmpty(tb.Text) ? tb.Text: null;
答案 1 :(得分:4)
只是为了启发你:)
这是来自反射器:
public virtual string Text
{
get
{
string str = (string) this.ViewState["Text"];
if (str != null)
{
return str;
}
return string.Empty;
}
set
{
this.ViewState["Text"] = value;
}
}
答案 2 :(得分:0)
您可以在没有任何C#的情况下执行此操作。
只需将ConvertEmptyStringToNull属性参数设置为true,例如:
<asp:ObjectDataSource runat="server" ID="ObjectDataSourceExample" TypeName="Example.ExampleTableAdapter" SelectMethod="GetDataBySomething">
<SelectParameters>
<asp:ControlParameter Name="Something" ConvertEmptyStringToNull="true" ControlID="tbSomething" />
</SelectParameters>
</asp:ObjectDataSource>
答案 3 :(得分:0)
“”“财产价值 键入:System.String TextBox控件中显示的文本。默认值为空字符串(“”)。“”“
Aaronaught是对的。
Null是一个非常松散的术语,不应该,并且很容易与'Nothing'混淆,后者在编程中使用得更好。 textbox.text值永远不会为null,它将为“”。什么都没有指你是否已初始化字符串变量。 SOOOOO
the textbox itself could = Nothing
the textbox.text can only equal "" (or string.empty - function does the same thing) if the textbox isnot nothing
在引用字符串是否包含任何字符时,使用string.empty或“”是一般的经验法则
显然你在ur sqlcommand中使用的Paramater需要为null或者不是......
在VB中:
If TextBox.Text = "" Then
VariableUsedInSqlCommand = Nothing
End If
从她那里你可以将SP或Inline SqlCommand中的默认参数值设置为Null,所以当它收到一个没有的参数时,它会将参数恢复为= Null
在存储过程中(如果您将textbox.text值直接发送到SP参数):
If (@Paramater = "")
Begin
end
else
begin
end
答案 4 :(得分:-1)
将ASP代码中的默认参数值设置为null
。