Необходимо управление пользователем ViewState / State Help - PullRequest
0 голосов
/ 07 декабря 2009

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

Заранее спасибо

  Private _Length As Double = 0.0
        Public Property Length() As Double
            Get
                If (Me.ViewState("calcLength") IsNot Nothing) Then
                    Return CType(ViewState("calcLength"), Double)
                End If
                Return _Length

            End Get
            Set(ByVal value As Double)
                ViewState("calcLength") = value
                txtLength.Text = value.ToString()
                _Length = value
            End Set
        End Property


     Private _Width As Double = 0.0
        Public Property Width() As Double
            Get
                If (Me.ViewState("calcwidth") IsNot Nothing) Then
                    Return CType(Me.ViewState("calcwidth"), Double)
                End If
                Return _Width
            End Get
            Set(ByVal value As Double)
                Me.ViewState("calcwidth") = value
                Me.txtwidth.Text = value.ToString()
                _Width = value
            End Set
        End Property


     Private _calculatedboardfeet As Double = 0.0
        Public Property CalculateBoardFeet() As Double
            Get
                If (Me.ViewState("calculateboardfeet") IsNot Nothing) Then
                    _calculatedboardfeet = CType(ViewState("calculateboardfeet"), Double)

                End If
                Return _calculatedboardfeet
            End Get
            Set(ByVal value As Double)
                Me.ViewState("calculateboardfeet") = value
                Me.lblCalculatedValue.Text = String.Format("{0:f2}", value)
                _calculatedboardfeet = value
            End Set
        End Property

Ответы [ 3 ]

2 голосов
/ 07 декабря 2009

Есть та часть, которую я «думаю» не имеет смысла, хотя она может и не быть причиной проблемы. Я еще детально изучил остальные коды.

ElseIf (Me.ViewState("txtwidth") Is Nothing) Then
      Return CType(Me.ViewState("txtwidth"), Double)

Если элемент ViewState не может быть найден (т.е. Is Nothing), как вы возвращаете приведенное значение? Это то же самое для 3 свойств.

0 голосов
/ 08 декабря 2009

Оказалось, что мне нужно было вызвать часть назначения моего кода в событии pre_Render в Usercontrol. Это происходит позже, чем событие PageLoad () родительской страницы, когда необходимая информация будет доступна в представлении элемента управления

0 голосов
/ 07 декабря 2009

Что вы подразумеваете под «третьим значением, которое является расчетным значением»? В-третьих, как в CalculateBoardFeet ()?

На каком этапе жизненного цикла страницы вы называете эти свойства?

Почему вы храните значения как в ViewState, так и в свойстве элемента управления .Text, а затем снова в переменной класса? Тоже. Много. Копии.

Если вы программно устанавливаете свойство элемента управления .Text, это значение должно быть восстановлено при обратной передаче, без необходимости явной установки ViewState самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...