【问题标题】:Dim value disappears vb.net暗淡值消失 vb.net
【发布时间】:2014-10-06 15:59:30
【问题描述】:

我试图在后面的代码中存储一个值,这样我就不必用 HiddenFields 阻塞我的页面,但是值“消失”

我假设它与作用域或 byval vs byref 有关,但我不知道我需要如何做才能使其工作。

我尝试做的是在我的部分类下创建一个 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

【问题讨论】:

    标签: vb.net code-behind


    【解决方案1】:

    该值消失了,因为所有变量(或控件)都在每个页面的生命周期结束时被释放。 GV_Relations_RowCommand 仅在 RowCommand 上触发,btn_lagre_Click 是不同的操作。您可以将此值存储在Session 变量、ViewState 或(如您所做的)HiddenField 中。所以当用户点击btn_lagre时,之前导致RowCommand的动作是不同的回发,因此变量为Nothing

    所以一种方式(除了你的HiddenField 方法),使用ViewState

    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")))
    

    Nine Options for Managing Persistent User State in ASP.NET

    【讨论】:

    • 我的老板不是 Session 的粉丝,我觉得 HiddenField 可能比 ViewState 更容易。但至少我知道为什么它不起作用,我猜这就是我所需要的。将来节省我的时间:)
    【解决方案2】:

    每个Postback 都会清除该变量。您需要将其存储在ViewstateSession 中。你可以这样做:

    Property _ActNo As String 
        Get 
            Return ViewState("_ActNo")
        End Get 
        Set(ByVal value As String)
            ViewState("_ActNo") = value
        End Set 
    End Property
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 2017-01-06
      • 2017-09-19
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多