1

我已经通过aspx中的代码前面使用了插入命令,输出参数为:

asp:Parameter Name="ReturnCustomerID" Type="String" Direction="Output"

在代码隐藏(C#)中,OnInserted="SqlDS_CustomerDetails_OnInserted"我有:

protected void SqlDS_CustomerDetails_OnInserted(object sender, SqlDataSourceStatusEventArgs e)
{
    String newCustomerID;
    newCustomerID = e.Command.Parameters["@ReturnCustomerID"].Value.ToString();
}

但由于某种原因,我的返回值一直为空......我尝试直接在 SQL 服务器中执行存储过程,它很好并且返回了正确的 ID,但不是在 c# 或 ASPX 中。

有没有办法直接将输出参数“评估”到代码前面的标签文本?IE

asp:Label ID="NewCustomerID" runat="server" Text='<%# Eval("ReturnCustomerID") %>'>

我只需要将 ID 绑定到该标签的任何方法。

4

1 回答 1

1

我看到您已将 ReturnCustomerID 参数类型设置为字符串。从存储过程返回字符串作为返回参数时,必须在调用存储过程之前将该参数设置为非空值 - 即使它是仅输出参数。所以你需要让你的参数有一个InputOutput的方向:

<asp:Parameter Name="ReturnCustomerID" Type="String" Direction="InputOutput">

在 SqlDataSource.Inserting 事件中,您需要设置一个默认值:

e.Command.Parameters("@ReturnCustomerID").Value = "XXXXXXXXX" 

请参阅此链接http://social.msdn.microsoft.com/Forums/en-SG/sqlintegrationservices/thread/6c95fa58-ad54-4626-96f5-339495c1715f

并向下滚动到 Paul Smith 的帖子。

于 2015-01-13T17:59:18.667 回答