我正在尝试在代码中存储一个值,所以我不必用HiddenFields阻塞我的页面,但值'消失'
我假设它与范围或byval vs byref有关,但我不知道我需要如何才能使它工作。
我尝试做的是在我的Partial Class下创建Dim,在gridview.RowCommand中设置值,然后尝试在稍后的按钮处获取值。单击
Partial Class CustNSSF_MinSide
Inherits System.Web.UI.Page
Dim vr As New vrClass
Dim _ActNo As String
Sub GV_Relations_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GV_Relations.RowCommand
_ActNo = GV_Relations.DataKeys(index)("ActSeqNo")
Protected Sub btn_lagre_Click(sender As Object, e As System.EventArgs) Handles btn_lagre.Click
Dim test = _ActNo
答案 0 :(得分:1)
该值消失,因为所有变量(或控件)都放置在每个页面生命周期的末尾。 GV_Relations_RowCommand
仅在RowCommand
上触发,btn_lagre_Click
是另一种操作。您可以将此值存储在Session
变量ViewState
或HiddenField
中(如您所见)。因此,当用户点击btn_lagre
时,导致RowCommand
的上一个操作是不同的回发,因此该变量为Nothing
。
所以使用HiddenField
的一种方式(除ViewState
aproach之外):
Private Property ActSeqNo As System.Int32
Get
If ViewState("ActSeqNo") Is Nothing Then
ViewState("ActSeqNo") = System.Int32.MinValue
End If
Return DirectCast(ViewState("ActSeqNo"), System.Int32)
End Get
Set(value As System.Int32)
ViewState("ActSeqNo") = value
End Set
End Property
然后你可以用这种方式设置它:
Me.ActSeqNo = System.Int32.Parse(GV_Relations.DataKeys(index)("ActSeqNo")))
答案 1 :(得分:0)
变量将在每Postback
清除。您需要将其存储在Viewstate
或Session
中。你可以这样做:
Property _ActNo As String
Get
Return ViewState("_ActNo")
End Get
Set(ByVal value As String)
ViewState("_ActNo") = value
End Set
End Property