Как веб-часть может узнать, что EditorPart открыт - PullRequest
1 голос
/ 30 октября 2009

Я создал веб-часть с пользовательской частью редактора. Теперь я хочу внести изменения в поведение веб-части, если часть редактора открыта.

Я почти могу заставить его работать, установив флаг в методе CreateEditorParts (), за исключением того, что он также срабатывает, когда пользователь нажимает «ОК», «Применить» или «Отмена». Страница будет отображаться без открытой части редактора, но веб-часть все еще выполняет метод CreateEditorParts.

Мне не удалось найти свойство в классе System.Web.UI.WebControls.WebParts.WebPart, которое указывало бы на это, что, очевидно, так и должно быть;)

.. есть ли способ?

Ответы [ 3 ]

2 голосов
/ 30 октября 2009

Вы можете проверить, находится ли страница в режиме редактирования, используя следующее:

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

Я не проверял это, но вы можете сделать эту проверку в CreateEditorParts (), и код должен выполняться только при открытой части editor.

0 голосов
/ 24 октября 2011

В случае, если это может быть полезно для других:

Есть несколько точек , в которых ваша веб-часть может выяснить, что ее 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 имеет ссылку на parent WebPart посредством свойства EditorPart.WebPartToEdit .
0 голосов
/ 30 октября 2009

Я не проверял его, но, возможно, проверка видимости самого EditorPart может быть вариантом.

...