Объявление строки и условия в VB - PullRequest
3 голосов
/ 17 января 2012

У меня есть строковая переменная на этой странице с именем "a". Я хотел, чтобы сценарий был.

При запуске страницы «а» будет нулевым.

Но когда пользователь выбрал запись в элементе управления DetailView, «a» станет «иметь».

Ниже приведен мой код. Но я продолжаю получать «a» = null, хотя я выбрал запись в элементе управления detailView.

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 ]

3 голосов
/ 17 января 2012

Когда вы выполняете какие-либо операции на своей странице с элементами управления на стороне сервера и обратной передачей страницы, все переменные, которые объявлены глобально, снова сбрасываются и переходят на начальную стадию, поэтому вы каждый раз получаете = null.

2 голосов
/ 17 января 2012

Код в порядке, но вы изменяете значение, когда выбранный индекс изменяется в виде сетки, а не в подробном представлении, а также значения не сохраняются посредством обратных передач. Если вы назначите выбранное значение 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 при каждой загрузке страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...