在vb中声明字符串和条件

时间:2012-01-17 11:09:29

标签: vb.net visual-studio-2010

我在此页面中有一个名为“a”的String变量。 我想要这个场景。

当页面启动时,“a”将为空。

但是当用户从DetailView控件中选择一个条目时,“a”将变为“have”。

以下是我的代码。但即使我从detailView控件中选择了一个条目,我仍然会得到“a”= null。

Dim a As String

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub

Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
    a = "a"
End Sub

为什么会这样?我应该怎么做呢?

2 个答案:

答案 0 :(得分:3)

当您使用服务器端控件和页面回发对页面执行任何操作时,所有全局声明的变量将再次重置并进入初始阶段,这就是为什么每次都获得= null的原因。

答案 1 :(得分:2)

代码没问题,但是当您在gridview上更改所选索引时更改值,而不是详细信息视图,也不会通过回发存储值。例如,如果将gridview选定值分配给标签,并且viewstate处于活动状态,则将在该控件上维护该值。但是VB上的变量会在每次回发时重置。

无论如何,您可以更新Page_Load

上的字符串
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load       
    a = "a" 'or whatever value you need. i.e. the gridview selected data key, etc...
End Sub

或者,如果它基于用户的操作,请添加page.ispostback

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load  
    If Page.IsPostBack Then     
        a = "a" 'or whatever value you need. i.e. the gridview selected data key, etc...
        'or for example...
        a = Me.aDropDown.SelectedItem.Text
    Else
        a = String.Empty
    End If
End Sub

如果没有,每次页面加载时,“a”总是等于string.empty。