На Postback заполнители исчезают - PullRequest
1 голос
/ 19 сентября 2011

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

If (Not IsPostBack is Nothing)

элементы управления внутри заполнителя исчезают при публикации.

Моя Page_Load выглядит сейчас

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Session("ProId") = Nothing
    Session("FolId") = Nothing
    Dim ProId As Integer
    If (Not Request.QueryString("ProjectID") Is Nothing) Then
        ProId = Convert.ToInt32(Request.QueryString("ProjectID").ToString())
        Session("ProId") = Request.QueryString("ProjectID").ToString()
    End If
    Dim FolId As Integer
    If (Not Request.QueryString("FolderID") Is Nothing) Then
        FolId = Convert.ToInt32(Request.QueryString("FolderID").ToString())
        Session("FolId") = Request.QueryString("FolderID").ToString()
    End If
    objUser = New BSSiteUser(CInt(Page.User.SiteUser.intID))
    objProject = New BSProject(ProId)
    objFolder = New BSFolder(objUser.SiteUserID, FolId)
    objOrganization = New BSOrganization(objProject.intOrganizationID, objUser.SiteUserID)
    Me.Load_SubcontractorList()
    Me.Load_EvaluationList(1)
    Me.Load_EvaluationList(2)
    Me.lblorganization.Text = objOrganization.CompanyName
    Me.lblprojectname.Text = objProject.strProjectName
    Me.lblprojectnumber.Text = objProject.strProjectNumber
    Me.lbldatecreated.Text = Date.Now.Date.ToString()
End Sub

Load_EvaluationList - это то, что загружает пользовательские элементы управления, если я помещу проверку IsPostBack вокруг этих двух элементов, элементы управления исчезнут, в чем может быть проблема

Ответы [ 3 ]

3 голосов
/ 19 сентября 2011

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

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

0 голосов
/ 20 сентября 2011

Я оставляю этот вопрос, так как было принято решение пойти другим путем

0 голосов
/ 19 сентября 2011

Если вы динамически добавляете элементы управления, то при каждой обратной передаче вам нужно снова добавлять элементы управления.

попробуйте использовать if (Not IsPostBack) или (IsPostBack) вместо сравнения с Nothing.

Здесь я просто добавляю текстовое поле динамически при обратной передаче, и оно останется при каждой обратной передаче.

     Partial Class _Default
        Inherits System.Web.UI.Page

      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If (IsPostBack) Then
        Dim t As TextBox = New TextBox()
        form1.Controls.Add(t)

    End If

End Sub

Конечный класс

Вы можете поместить элементы управления, которые вы пытаетесь динамически добавить, в одну функцию / метод / подпрограмму и просто вызывать внутри Load.

Обновление

Если вы хотите, чтобы ваши данные оставались в элементах управления, вы должны сохранить данные в состоянии просмотра. Вы должны будете снова создать элемент управления, независимо от того, что, но до того, как элемент управления будет отправлен обратно пользователю, получите свои данные из состояния просмотра. Это описано с примером здесь.

http://forums.asp.net/t/1186195.aspx/1

...