Web部件如何知道它的EditorPart是开放的

时间:2009-10-29 23:32:28

标签: sharepoint sharepoint-2007 sharepoint-api

我使用自定义编辑器部件创建了一个Web部件。 现在我想在编辑器部分打开时更改Web部件的行为。

我几乎可以通过在CreateEditorParts()方法中设置一个标志来使其工作,除了当用户单击“确定”,“应用”或“取消”时也会触发。页面将在不打开编辑器部分的情况下呈现,但Web部件仍然执行CreateEditorParts方法。

我无法在System.Web.UI.WebControls.WebParts.WebPart类中找到一个可以指示此属性的属性,这看起来很明显应该在哪里;)

..有办法吗?

3 个答案:

答案 0 :(得分:2)

您可以使用以下方法检查页面是否处于编辑模式:

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

我没有对此进行过测试,但你可以在CreateEditorParts()中进行检查,代码只应在编辑部分打开时执行。

答案 1 :(得分:0)

我还没有对它进行过测试,但也许可以选择检查EditorPart本身的可见性。

答案 2 :(得分:0)

如果它可能对其他人有帮助:

有几个 points ,您的WebPart可能会发现其正在显示其EditorPart。其中一个可能适合您的场景:

在WebPart中:

  • 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。