2009-09-21 40 views
2

我使用的VB.net (FormView控件和ObjectDataSource)和SQL Server 2005如何利用VB.net

我想获得最后插入的身份在FormView控件插入的情况下最后插入@@身份在表上FormView1_ItemInserted

Protected Sub FormView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertedEventArgs) Handles FormView1.ItemInserted 

End Sub 

我的问题是,我想我的重定向FormView控件只读模式FormView1_ItemInserted后,但我需要示出了T他以只读模式插入记录,并且只有当我得到我最后插入的记录时才有可能。@@ identity。您能否让我知道我的应用程序需要做什么修改,程序和代码实现了这一点。

请用示例代码建议!使用VB.net

谢谢。

此致 MS

回答

8

我使用以下逻辑

解决我的上述问题我改变的SQL插入程序和添加新参数

@OrgID int OUTPUT 

和插入命令后

我用

SET @OrgID = SCOPE_IDENTITY() 

RETURN 
在我的应用

而且重新配置我的ObjectDataSource后,我得到了下面的参数

<asp:Parameter ConvertEmptyStringToNull="true" Name="OrgID" Type="Int32" 
     Direction="Output" /> 

在我的ObjectDataSource插入参数

我下面写的代码在我的ObjectDataSource插入事件。

Protected Sub RAOOrganisationDataSource_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles RAOOrganisationDataSource.Inserted 
    Dim OrgID As Integer = e.OutputParameters("OrgID") 
    Session("OrgID") = OrgID 
End Sub 

因此,我得到了我的最新插入的会话中的OrgID。

干杯!

请不要让我知道如果同时使用上述概念

1

其实这样做的最简单的方法是,通过添加onInserted事件的数据源这在我的情况是使用LinqDataSource有任何错误。

protected void lnqInsert_Inserted(object sender, LinqDataSourceStatusEventArgs e) 
{ 
      Session["RecentInsertedClass"] = ((Class)e.Result).ID; 
}