2012-11-09 37 views
0

我有一個可視化Web部件(沙箱),用於可視化添加子站點的表單。當一個子站點被添加到導航和DropDownlist中(爲了刪除目的...)。回發後重新加載/刷新頁面。 SharePoint,可視化Web部件(沙盒)

我的問題是,後回傳一切正常,除了我必須手動重新加載頁面以查看新的更改(導航和下拉列表)。請注意,Response.RedirectUpdatePanel將工作我沙箱解決方案。

任何人都有解決這個問題的辦法嗎?

回答

3

當您執行回發時,瀏覽器會將所有Web控件的內容提交給服務器。在這個意義上服務器是無狀態;控件的狀態實際上存儲在瀏覽器中。我會說你的問題發生是因爲Web控件沒有從SharePoint對象模型填充。相反,服務器使用收到的數據作爲回發。或者,羣體甚至可能發生,但回發數據將覆蓋控件的內容。

解決方法是刷新控制數據控件已從回發數據填充。例如,您可以在方法OnPreRender中執行此操作。當OnPreRender被調用時,所有的回發數據已經被處理。

嘗試在您的webpart類中添加以下代碼。

protected override void OnPreRender(EventArgs args) 
{ 
    if (this.Page.IsPostBack) 
    { 
     // Repopulate controls here 
    } 
} 

問題是,當然,重新填充會殺死控件的前一個(回傳)狀態。因此,如果要保留控件的當前值(如下拉選擇),則必須在重新填充前將其保存並手動恢復。

要了解有關ASP.NET中頁面生命週期的更多信息,請參見ASP.NET Page Life Cycle Overview

+0

感謝您的回答!你如何填充控件?不能找到一個很好的例子/解釋。例如,我想再次填充我的DropDownList1。 – JeppePepp

+0

請參閱[填充DropDownList控件的幾種方法](http://www.dotnetfunda.com/articles/article30.aspx)(具體來說,標題爲「通過服務器端代碼填充DropDownList控件」)。 –

相關問題