Не удалось загрузить viewstate - PullRequest
0 голосов
/ 29 апреля 2010

Да, это снова позорное состояние!

Теперь я знаю, что проблемы могут возникать, если вы загружаете элементы управления в неправильном порядке или если идентификаторы состояния представления неверны после обратных передач и т. Д. И т. Д.

Но моя проблема в том, что я не создаю какие-либо элементы управления динамически - у меня только один пользовательский элемент управления на странице.

Что еще более важно, проблема возникает только с одним пользователем.

В чем может быть проблема? Поврежден ли кеш браузера?

Любая помощь приветствуется.

спасибо,

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

1 Ответ

1 голос
/ 05 мая 2010

Попробуйте переместить свою логику в OnPreRender

и / или В событии OnLoad создайте страницу с текущим параметром, чтобы DropDownList мог правильно перестроиться, затем перерисовайте страницу с новым параметром и посмотрите, исчезнет ли проблема.

Вероятно, что DropDownList имеет viewstate, но содержимое элемента управления изменилось до повторной обработки ViewState.

...