全局变量在另一个事件中失去价值

时间:2015-08-24 07:35:42

标签: asp.net .net vb.net events global-variables

我有以下全局变量

Dim cardNumber As String
Dim txnAmount As String
Dim TerminalID As String
Dim CurrencyCode As String

从SP

返回的结果集中单击事件分配值
dsCards = Utilities.GetVirtualResultNew(txtCardNumber.Text.Trim)
grdTransactionResultSearch.DataSource = dsCards
grdTransactionResultSearch.DataBind()
cardNumber = IIf(IsDBNull(dsCards.Tables(0).Rows(0).Item("pan")), "", dsCards.Tables(0).Rows(0).Item("pan"))
txnAmount = IIf(IsDBNull(dsCards.Tables(0).Rows(0).Item("TotalAmount")), "", dsCards.Tables(0).Rows(0).Item("TotalAmount"))
TerminalID = IIf(IsDBNull(dsCards.Tables(0).Rows(0).Item("TerminalID")), "", dsCards.Tables(0).Rows(0).Item("TerminalID"))
CurrencyCode = IIf(IsDBNull(dsCards.Tables(0).Rows(0).Item("CurrencyCode")), "", dsCards.Tables(0).Rows(0).Item("CurrencyCode"))

我调试了代码,我可以看到值被分配给它们但是当我尝试在另一个按钮点击事件中访问它们时,它们是空的

这是我的按钮点击事件,其中这些变量是空的

Protected Sub btnAuthorize_Click(sender As Object, e As EventArgs) Handles btnAuthorize.Click
  Utilities.InsertAuthorizedTransactions(cardNumber, txnAmount, TerminalID, CurrencyCode)
  Label1.Visible = True
END Sub   

我的代码有问题吗?

1 个答案:

答案 0 :(得分:0)

单击按钮时,将执行回发(What is a postback?),在这种情况下将重新启动变量。

首选选项可能是在第一次点击按钮时将变量存储在ViewState(What is ViewState?)中:

ViewState("cardNumber") = "foo"
ViewState("txnAmount") = "bar"
'etc.

然后在第二次点击时访问它们。

另请注意,您不应在VB.NET中使用IIF函数,而应使用If 运算符