2010-06-17 92 views
0

我有我的第一个aspx页面,其中包含用户填充的数据。它以文本框的格式显示,并且在所有用户点击提交并且所有数据都进入数据库。在数据库中,每条记录都有一个ID字段。现在,当用户点击提交并进入下一页时,我想从他刚刚插入的数据库中获得ID(可能为1到1000+),并在第二页上提供它们。我怎么能把所有的ID从第1页到第2页?我可以在会话中做到吗?或者是其他东西。请放一些示例代码,这样我可以更好地理解。将多个ID从第一个aspx页面存储到下一个aspx页面

+0

如果它坚持到数据库中的所有的ID,你为什么必须通过网页来传递呢?在第2页再次获取数据。 – RPM1984 2010-12-21 08:54:19

回答

0

它可以完成,它并不难。概括地说,这里是你会想做什么:

  • 你插入到数据库中的每个项目,在你的数据库的方法某处容易返回新建项目的ID
  • 店所保存的物品的ID来访问 - 会议是一个好地方。
  • 在下一页上,您可以访问您的Session变量来检索您保存的ID。

(目前后期编辑中添加代码)

返回新插入的ID的最好,最安全的方式是通过交易(加,如果有与插入一个问题,你可以滚回去)。这里有一个交易是什么样子,我们做一个插入,并返回一个ID:

ALTER PROCEDURE [dbo].[storeFrontItems] 
    @itemName NVARCHAR(255),      
    @itemDescription NVARCHAR(255), 

    @newItemID INT OUTPUT 
AS 

    BEGIN TRANSACTION 
    INSERT INTO storeFrontItems (Name, Description) VALUES (@itemName, @itemDescription) 
    SET @error = @@ERROR 
    IF @error <> 0 
    BEGIN 
     ROLLBACK TRANSACTION 
     RETURN @error 
    END 
    ELSE 
    BEGIN 
     SELECT @newItemID = @@IDENTITY 
    END 
    COMMIT TRANSACTION 


    RETURN 

然后你就可以在你的新的ID存储在会话变量

Dim newlyCreatedItemID int 
    newlyCreatedItemID = databaseInsertNewItem /* ... */ 

    /* to store it in a session variable */ 
    Session("NewItemID") = newlyCreatedItemID 

    /* to retrieve it from a session variable */ 
    newlyCreatedItemID = i = CType(Session("NewItemID"), newlyCreatedItemID) 
+0

我得到这部分。所以当我回来@newitemid,然后我会话(“itemid”)= @newitemid。不会覆盖每个插页上的下一个newitemid?我怎么能把他们在会议中说1,2,3,4,5 ......或者我理解错了? – poller 2010-06-17 21:02:42

+0

您可以在会话中存储_objects_,比如数组,hashmaps等。这对您有帮助吗? – 2010-06-17 21:04:46

0

首先建立某种形式的sessionId和存储它在会话对象中。

Session["SessionId"] = Guid.NewGuid().ToString(); 

当存储的ID,在分贝,还用它记录的SessionID(上图),这样就可以知道该会话的所有记录。

然后在接下来的页面,只是做一个查询来获取与该SessionID的

相关问题