ObjectDataSource.Insert始终返回-1

时间:2011-11-10 23:42:41

标签: c# asp.net sql objectdatasource

尝试获取新的行ID,我到处寻找并尝试了似乎适用于其他人的常用解决方案。我无法更改数据库,但我知道参数VersionID是使用范围标识设置的。 SP中的最后一行是return(@@ VersionID)我也尝试将它放在插入的事件

protected void VersionDataSource_Inserted(object sender, ObjectDataSourceStatusEventArgs    e)
{
    int returnValue = (int)e.OutputParameters;

}

然而它总是返回-1,我似乎无法获得新的行ID,我尝试使用参数Direction输出以及returnValue。完全失去了,整整一天都在这个垃圾上。

2 个答案:

答案 0 :(得分:0)

看来Outputparameters是一本字典,我建议

int returnValue = (int)e.OutputParameters["VersionID"].Value;

答案 1 :(得分:0)

您尚未发布标记,但您应将参数定义为输出参数:

<asp:Parameter Direction="Output" Name="VersionID"  Type="Int32" /> 

通过上述内容,您应该能够获得如下输出值:

protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e) 
{ 
    int id = Convert.ToInt32(e.Command.Parameter["VersionID"].Value); 
}