Почему строка, добавляемая в данные сессии, исчезает при обновлении страницы? - PullRequest
1 голос
/ 25 февраля 2010

Я установил класс в качестве фасада для доступа к переменным сеанса для моего приложения. В этом приложении я храню весь набор данных для конкретного работодателя в качестве переменной сеанса.

На одной из подстраниц у меня есть кнопка, которая добавляет строку в существующую таблицу, хранящуюся в этом наборе данных.

    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

Когда в коде добавляется строка, количество строк увеличивается, и строка существует. После выхода из этой области страница обновляется из-за кнопки, содержащейся в панели обновления. Когда это происходит, и я снова нажимаю кнопку добавления, количество строк для этого элемента сбрасывается до 0 и 1 после выполнения кода. Предыдущая добавленная строка пропала.

Чего мне не хватает? Не стесняйтесь размещать примеры на других языках, если хотите, я просто использую VB.NET на работе. :)

Вот как набор данных назначается из веб-службы:

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

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

End Sub

1 Ответ

0 голосов
/ 25 февраля 2010

Не думаю, что нужно хранить набор данных в сеансе.

Для рассматриваемой проблемы я полагаю, что вызов AcceptChanges после добавления строки в коллекцию должен помочь.

...