2011-09-19 38 views
1

在我的網頁中,我正在加載佔位符內的usercontrols。當ajaxcontroltoolkit評分發生變化時,這些用戶控件中的每一個都會觸發回發。我遇到的問題是,如果我使用關於Postback佔位符控件正在消失

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

動態檢查這兩個四周,徹底消失,可能是什麼問題添加的控件在回發時消失,因爲您正在處理頁面的全新實例。爲了讓您保留它們,您將不得不重新創建它們,以便發生任何回發。

還需要注意的是,如果您希望保留ViewState,則應在Page Init上創建用戶控件,而不是在頁面加載時,因爲將ViewState數據加載回控件發生在Load事件之前。

+0

我試圖把大部分的載荷送入Page_Init,但阿賈克斯的評價控制不斷得到復位。我錯過了什麼。我瞭解回發問題 – mattgcon

+0

您是否將評級控制的CurrentRating屬性保存到視圖狀態,然後在回發中將其設置回來? –

+0

我使用的等級控制其設定等保護小組pntrating_Changed(BYVAL發件人爲對象,BYVALË作爲AjaxControlToolkit.RatingEventArgs) e.CallbackResult = e.Value OnBubbleCalculate(E) 結束子 – mattgcon

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 

末級

你可以把你想在一個函數/方法/子程序動態添加和剛剛呼叫負載的內部控制。

更新

如果你希望你的數據留在您必須將數據保存在ViewState的控件。無論如何,只有在控件發回給用戶從視圖狀態獲取其數據之前,您將不得不再次創建控件。這裏用例子來描述。

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

+0

我試過這個,但仍然是相同的。 – mattgcon

+0

你也可以用pre init方法來做。 – MStp

+0

這是我不想讓控件每次都重新加載的東西。我希望他們留在回發屏幕上。每次頁面往返時,我都不想重新加載它們。如果我將它設置在pre_init或page_load中,並且if(Not IsPostBack)中的所有內容都會被清除,並且它們永遠不會被重新加載 – mattgcon