为什么在刷新页面时添加到会话数据表的行会消失?

时间:2010-02-25 16:55:45

标签: vb.net session datatable dataset

我已经将类设置为Facade来访问我的应用程序的会话变量。在这个应用程序中,我将特定雇主的整个数据集存储为会话变量。

在其中一个子页面中,我有一个按钮,可以将一行添加到该数据集中存储的现有表格中。

    Dim curRow As Data.DataRow = mySession.tWorksiteOtherMeasures.NewRow()

    curRow("lngWorksiteID") = getSelectedWorksiteID(getSelectedSiteID())
    curRow("strMeasure") = ""
    curRow("lngStatusID") = -1
    curRow("lngPoints") = -1

    mySession.tWorksiteOtherMeasures.Rows.Add(curRow)

该类正在使用以下方法访问该表:

Public Shared ReadOnly Property tWorksiteOtherMeasures() As Data.DataTable
        Get
            Return dsEmployer.Tables(TWORKSITEOTHERMEASURES_IDX)
        End Get
   End Property    

Public Shared Property dsEmployer() As Data.DataSet
        Get
            Return CType(HttpContext.Current.Session(DSEMPLOYER_IDX), Data.DataSet)
        End Get
        Set(ByVal value As Data.DataSet)
            HttpContext.Current.Session(DSEMPLOYER_IDX) = value
        End Set
    End Property

当在代码中添加行时,行计数递增并且行存在。一旦超出该范围,由于按钮包含在updatePanel中,页面将刷新。当发生这种情况时,我再次单击添加按钮,该代码运行后该项的行计数重置为0和1。之前添加的行已消失。

我错过了什么?如果您愿意,可以随意发布其他语言的示例,我恰好在工作中使用VB.NET。 :)

以下是如何从Web服务分配数据集:

Public Shared Sub loadDSEmployer(ByVal strUserId As String)
    Dim myService As New someservice.service

    mySession.dsEmployer = myService.GetEmployerAndSites(strUserId, isInternal)

End Sub

1 个答案:

答案 0 :(得分:0)

我认为不应该将数据集存储在会话中。

对于手头的问题,我想在将行添加到集合之后调用AcceptChanges应该有所帮助。

相关问题