Да, это снова позорное состояние!
Теперь я знаю, что проблемы могут возникать, если вы загружаете элементы управления в неправильном порядке или если идентификаторы состояния представления неверны после обратных передач и т. Д. И т. Д.
Но моя проблема в том, что я не создаю какие-либо элементы управления динамически - у меня только один пользовательский элемент управления на странице.
Что еще более важно, проблема возникает только с одним пользователем.
В чем может быть проблема? Поврежден ли кеш браузера?
Любая помощь приветствуется.
спасибо,
KS
Привет, хорошо - так что я сузил это немного больше. Когда я выбираю элемент из элемента управления раскрывающегося списка (который является UserControl) - и затем пытаюсь перепривязать мою сетку, используя выбранное значение, возникает ошибка.
Выбранное значение при обратной передаче, кажется, каждый раз равно нулю (потому что элемент управления не находится в состоянии просмотра как-то?!).
UserControl (содержащий выпадающий список) добавляется во время разработки.
Привет, спасибо за ваш ответ. Какую логику я должен попытаться перейти на OnPreRender?
Еще одна вещь, которую я пропустил ...
-Первое связывание сетки отлично работает (при первой загрузке страницы).
-Выбор значения из выпадающего списка вызывает обратную передачу, при которой сетка снова связывается с использованием значений - также работает нормально.
-Когда я нажимаю другую кнопку (которая также вызывает привязку для сетки), возникает ошибка состояния представления.
Ниже приведен код:
UserControl Источник:
Импорт iMWeb_BUL
Импортирует System.Data
Частичный класс TitleList
Унаследован от System.Web.UI.UserControl
Public Event IndexHasChanged(ByVal sender As Object, ByVal e As CommandEventArgs)
Public Property TitleID() As Integer
Get
Return IIf(DDL_Titles.SelectedValue = Nothing, 0, DDL_Titles.SelectedValue)
End Get
Set(ByVal value As Integer)
Try
DDL_Titles.SelectedValue = value
Catch
End Try
End Set
End Property
Public ReadOnly Property TitleTable() As DropDownList
Get
Return DDL_Titles
End Get
End Property
Public ReadOnly Property TitleName() As String
Get
If DDL_Titles.SelectedValue > 0 Then
Return DDL_Titles.SelectedItem.ToString()
Else
Return Nothing
End If
End Get
End Property
Public Sub DDL_Titles_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DDL_Titles.SelectedIndexChanged
Dim ee As CommandEventArgs = New CommandEventArgs(DDL_Titles.SelectedValue, Nothing)
RaiseEvent IndexHasChanged(Me, ee)
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
'bind dropdownlist
common.BindDDLs("MovieListDemo", "[SP_ListTitlesDEMO]", "MOV_ID", "movie_name", true, DDL_Titles, Nothing)
End If
End Sub
Конечный класс
Логика главной страницы (псевдо):
Sub Page_Load
If not postback
bindGrid()
End If
If UserControl1.IndexChanged
bindGrid()
End If
If Button1.clicked
bindGrid() <---- error occurs here
End if
Sub bingGrid
fetch data passing param TitleList1.TitleID (usercontrol)
End Sub
End Sub