在我的网页中,我在占位符中加载usercontrols。当更改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检查,控件就会消失,可能是什么问题
答案 0 :(得分:3)
当您使用全新的网页实例时,动态添加的控件会在回发时消失。为了让你保留它们,你将不得不为发生的任何回发重新创建它们。
同样重要的是要注意,如果您希望保留ViewState,则应在Page Init而不是Page Load上创建用户控件,因为在Load事件之前将ViewState数据加载回控件。
答案 1 :(得分: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内部。
如果您希望数据保留在控件中,则必须将数据保存在视图状态中。无论如何,您都必须再次创建控件,然后再将控件发送回用户,从视图状态获取数据。这里用例子来描述。
答案 2 :(得分:-4)
我正在放弃这个问题,因为决定采取不同的路线