我在aspx中通过代码前端使用了insert命令,输出参数是:
asp:Parameter Name="ReturnCustomerID" Type="String" Direction="Output"
在OnInserted="SqlDS_CustomerDetails_OnInserted"
的代码隐藏(C#)中我有:
protected void SqlDS_CustomerDetails_OnInserted(object sender, SqlDataSourceStatusEventArgs e)
{
String newCustomerID;
newCustomerID = e.Command.Parameters["@ReturnCustomerID"].Value.ToString();
}
但由于某种原因,我一直为我的返回值获取null ...我已经尝试直接在SQL服务器中执行存储过程并且它很好并且返回正确的ID但不在c#中或ASPX。
有没有办法直接" eval"代码前端标签文本的输出参数?即。
asp:Label ID="NewCustomerID" runat="server" Text='<%# Eval("ReturnCustomerID") %>'>
我只需要将ID绑定到该标签的方法。
答案 0 :(得分:1)
我看到你已将ReturnCustomerID参数类型设置为String。从存储过程返回一个字符串作为返回参数时,必须在调用存储过程之前将参数设置为非空值 - 即使它只是一个输出参数。因此,您需要使参数的方向为InputOutput:
<asp:Parameter Name="ReturnCustomerID" Type="String" Direction="InputOutput">
并且在SqlDataSource.Inserting事件中,您需要设置默认值:
e.Command.Parameters("@ReturnCustomerID").Value = "XXXXXXXXX"
然后向下滚动到Paul Smith的帖子。