我有以下全局变量
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
我的代码有什么问题?
当按钮被点击时,执行回发(什么是回发?),在这种情况下将重新初始化您的变量。
首选选项可能是在第一次单击按钮时将变量存储在ViewState(什么是ViewState?)中:
ViewState("cardNumber") = "foo"
ViewState("txnAmount") = "bar"
'etc.
然后在第二次点击时访问它们。
还请注意,您不应该在VB中使用IIF
函数。但是你应该使用If
运算符