加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

将空白字段值传递给存储过程ASP .NET C#

发布时间:2020-12-16 03:33:26 所属栏目:asp.Net 来源:网络整理
导读:如果textBox字段为空,我想将SQL Server 2008数据库表中的所有行返回到SQL数据源.所以我使用if @date IS NULL子句创建了一个存储过程. 虽然存储过程似乎在Visual Studio 2008中正常工作,但实际网页没有显示任何结果. 我猜我必须向存储过程发送一个DBNull值,如
如果textBox字段为空,我想将SQL Server 2008数据库表中的所有行返回到SQL数据源.所以我使用if @date IS NULL子句创建了一个存储过程.

虽然存储过程似乎在Visual Studio 2008中正常工作,但实际网页没有显示任何结果.

我猜我必须向存储过程发送一个DBNull值,如果textBox.Text == string.Empty.我尝试了SqlDataSource1.SelectParameters.Add,但似乎我从DBNull.Value到字符串的转换错误.

这是我的问题的根源还是我错过了其他的东西?如果文本字段为空,我如何将DBNull.Value传递给存储过程?

解决方法

您需要确保在SqlDataSource上将CancelSelectOnNullParameter设置为false,并且ConvertEmptyStringToNull对于所需参数为true.它应该在标记中看起来像这样:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" CancelSelectOnNullParameter="false" SelectCommand="...">
  <SelectParameters>
    <asp:ControlParameter Name="..." ControlID="..." PropertyName="..." DbType="..." ConvertEmptyStringToNull="true"/>
    ...
  </SelectParameters>
</asp:SqlDataSource>

如果您有多个可以提供空值的Control并且您只想允许其中一个为null,则问题将开始.在这种情况下,您必须将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;
}

这应该可以让你解决你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读