【问题标题】:Asp.Net C# How to pass null value parameter to datasourceAsp.Net C#如何将空值参数传递给数据源
【发布时间】:2017-04-04 04:28:21
【问题描述】:

我有一个带有参数的网格视图。它绑定到作为 SQL 查询的数据源。当参数的值为空时,查询在 SQL Server 中执行时返回行。当我尝试通过以下代码行向参数传递空值时,我没有得到任何结果。

FormDS.SelectParameters["ServiceFormCompletedId"].DefaultValue = Request.QueryString["sfcId"];

查询字符串不存在,因此它将空值传递给 FormDS 数据源。 SelectParameters 说它是一个空值。

所以我试着给它一个空字符串。

FormDS.SelectParameters["ServiceFormCompletedId"].DefaultValue = "";

在 ASP.NET 的标记中包含以下内容

<asp:Parameter Name="ServiceFormCompletedId" ConvertEmptyStringToNull="true" />

也没有结果。

我在“配置数据源”的“测试查询”部分中使用以下值测试了数据源并取回了行。

将空值传递给 SqlDataSource 的 SelectParameters 时我遗漏了什么?

【问题讨论】:

  • 你试过 DbNull.Value 吗?
  • 如何使用 DbNull ?我刚试过。不能将类型“System.DBNull”隐式转换为“字符串”。我尝试了 DbNull.ToString 并且它不起作用,因为它是一个空字符串并且不起作用。
  • 如果字符串为空/长度为 0,也许你可以使用三进制,传递 DBNull.Value,否则,传递你的字符串。
  • @WazeAndroid 是正确的。以前的解决方案效果很好。我最初忽略了它,因为我看不到它工作。你想让它成为这个问题的答案吗?

标签: c# asp.net sql-server


【解决方案1】:

试试这个:

            SqlCommand cmd = new SqlCommand("ProcedureName");
            cmd.Connection = new SqlConnection("yourConnString");
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters[0] = new SqlParameter("YourParaameter", SqlDbType.NVarChar);
            cmd.Parameters[0].Value = DBNull.Value;
            cmd.Parameters[0].Direction = ParameterDirection.Input;           

            cmd.ExecuteNonQuery(); // or any other command that you want to execute

【讨论】:

  • 虽然我确信您的解决方案有效,但它并不是我正在寻找的确切解决方案。 ASP.NET 的 SqlDataSource 标记中的 CancelSelectOnNullParameter="false" 有效。
【解决方案2】:

解决方案是将CancelSelectOnNullParameter="false" 放入SqlDataSource 标记中,如下所示。

<asp:SqlDataSource ID="IDxxx" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringxxx %>" CancelSelectOnNullParameter="false" SelectCommand="SELECT * FROM Table Where @Parameter1 = Table.Column1" >
    <SelectParameters>
        <asp:Parameter Name="Parameter1" />                                        
    </SelectParameters>
</asp:SqlDataSource>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2011-08-24
    相关资源
    最近更新 更多