2009-09-21 75 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; 
}