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