2009-10-29 23 views
1

我創建了一個帶有自定義編輯器部件的Web部件。 現在我想在編輯器部分打開的情況下對Web部件的行爲進行更改。Web部件如何知道它是EditorPart打開

我幾乎可以通過在CreateEditorParts()方法中設置一個標誌來使其工作,除了當用戶單擊「確定」,「應用」或「取消」時也會觸發。該頁面將在不編輯部分打開的情況下呈現,但Web部分仍然執行CreateEditorParts方法。

我一直沒能找到在System.Web.UI.WebControls.WebParts.WebPart類將表明這一點,這似乎是如此明顯,它應該是一個屬性;)

..有沒有辦法?

回答

0

我還沒有測試過,但也許檢查EditorPart本身的可見性可能是一個選項。

2

你可以檢查,看看是否該頁面在編輯模式下使用下列內容:

WebPartManager wpm = WebPartManager.GetCurrentWebPartManager(Page); 
if (wpm.DisplayMode == WebPartManager.EditDisplayMode) 
{ 
     //Page is in edit mode 
} 

我沒有測試過這一點,但你可以做CreateEditorParts此檢查()和代碼應該只執行當編輯部分打開時。

0

在情況下,它可能是幫助他人:

有幾個在您的WebPart可能弄清楚,正在顯示它的EditorPart。其中一人可能會適合您的方案:

在Web部件:

  • IWebEditable.CreateEditorParts:「[...] WebPartManager控件需要收集並創建每當服務器控件進入所有EditorPart控件實例編輯模式「。
  • WebPart.OnEditModeChanged:檢查WebPartManager.DisplayMode是否爲EditDisplayMode,並且WebPartManager.SelectedWebPart是您的WebPart。請注意,根據我的經驗,只有在進入編輯模式時纔會調用它,而不是在離開時調用它。
  • WebPartManager.DisplayModeChanged:執行與上一次相同的檢查。雖然根據我的經驗,這從來沒有被調用過。

在的EditorPart:

  • EditorPart.SyncChanges: 「[...],其中SyncChanges方法被稱爲另一種情況是當WebPart控件正進入編輯模式」。
  • EditorPart生命週期方法之一(例如OnInit/OnLoad)。 EditorPart無論如何都通過EditorPart.WebPartToEdit屬性參照 WebPart。
相關問題