如何使用VB.net在Formview插入的事件中获取最后插入的标识

时间:2009-09-21 08:06:37

标签: sql-server vb.net

我正在使用VB.net (FormView和ObjectDataSource)和Sql Server 2005.

我想在 FormView1_ItemInserted

中的表格中最后插入 @@ identity
Protected Sub FormView1_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewInsertedEventArgs) Handles FormView1.ItemInserted

End Sub

我的问题是我想在 FormView1_ItemInserted 之后将我的FormView重定向到只读模式但是为此我需要以只读模式显示插入的记录,这只有在我上次插入<时才有可能强> @@身份即可。你能告诉我在我的申请,程序和代码中我需要做些什么改变才能实现这一目标。

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

感谢。

最诚挚的问候, MS

2 个答案:

答案 0 :(得分: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

因此我在Session中获得了最新插入的OrgID。

干杯!

如果在使用上述概念时出现任何错误,请告诉我

答案 1 :(得分:1)

实际上,最简单的方法是将onInserted事件添加到dataSource,在我的例子中是LinqDatasource。

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