我有以下全局变量
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
我的代码有问题吗?
答案 0 :(得分:0)
单击按钮时,将执行回发(What is a postback?),在这种情况下将重新启动变量。
首选选项可能是在第一次点击按钮时将变量存储在ViewState(What is ViewState?)中:
ViewState("cardNumber") = "foo"
ViewState("txnAmount") = "bar"
'etc.
然后在第二次点击时访问它们。
另请注意,您不应在VB.NET中使用IIF
函数,而应使用If
运算符