1

在我的网页中,我在占位符中加载用户控件。当 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 检查,控件就会消失,可能是什么问题

4

3 回答 3

3

当您使用页面的全新实例时,动态添加的控件会在回发时消失。为了让您保留它们,您将不得不为发生的任何回发重新创建它们。

同样重要的是要注意,如果您希望保留 ViewState,则应在 Page Init 而不是 Page Load 上创建用户控件,因为将 ViewState 数据加载回控件发生在 Load 事件之前。

于 2011-09-19T05:18:17.023 回答
0

如果您要动态添加控件,那么在每次回发时,您都必须再次添加控件。

尝试使用 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

于 2011-09-19T05:18:47.550 回答
-4

我放弃了这个问题,因为决定走不同的路线

于 2011-09-20T17:22:34.640 回答