Я установил класс в качестве фасада для доступа к переменным сеанса для моего приложения. В этом приложении я храню весь набор данных для конкретного работодателя в качестве переменной сеанса.
На одной из подстраниц у меня есть кнопка, которая добавляет строку в существующую таблицу, хранящуюся в этом наборе данных.
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