2009-10-29 12 views
1

J'ai créé une partie Web avec une partie de l'éditeur personnalisé. Maintenant, je veux faire des changements dans le comportement de la partie Web si la partie de l'éditeur est ouverte.Comment une partie Web peut-elle savoir que EditorPart est ouvert?

Je peux presque le faire fonctionner en définissant un indicateur dans la méthode CreateEditorParts() sauf que cela se déclenche également lorsque l'utilisateur clique sur "OK", "Appliquer" ou "Annuler". La page s'affichera sans la partie de l'éditeur ouverte, mais la partie Web exécute toujours la méthode CreateEditorParts.

Je n'ai pas été en mesure de trouver une propriété sur la classe System.Web.UI.WebControls.WebParts.WebPart qui indiquerait ce qui semble si évidemment où il devrait être;)

.. Y a-t-il un moyen?

Répondre

0

Je ne l'ai pas testé, mais peut-être que vérifier la visibilité de l'éditeur lui-même pourrait être une option.

2

Vous pouvez vérifier si la page est en mode d'édition en utilisant les éléments suivants:

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

Je n'ai pas testé, mais vous pouvez faire cette vérification dans CreateEditorParts() et le code ne devrait exécuter lorsque l'éditeur est ouvert

0

Dans le cas où il pourrait être utile pour les autres:

Il y a plusieurs points de où votre composant WebPart peut comprendre que son EditorPart est affiché. L'un de ceux qui pourraient se glisser dans votre scénario:

En webpart:

  • IWebEditable.CreateEditorParts: « [...] Le contrôle WebPartManager prend la collecte et crée des instances de tous les contrôles EditorPart lorsque le contrôle du serveur entre modifier le mode. "
  • WebPart.OnEditModeChanged: vérifiez si les deux WebPartManager.DisplayMode est EditDisplayMode et WebPartManager.SelectedWebPart est votre WebPart. S'il vous plaît noter que, basé sur mon expérience, cela a été invoqué seulement en entrant en mode d'édition, pas en le quittant.
  • WebPartManager.DisplayModeChanged: effectuer les mêmes vérifications que la précédente. Bien que basé sur mon expérience, cela n'a jamais été invoqué.

En EditorPart:

  • EditorPart.SyncChanges: "[...] Un autre cas où la méthode est appelée SyncChanges est quand un contrôle WebPart passe en mode d'édition"
  • L'une des méthodes du cycle de vie EditorPart (par exemple OnInit/OnLoad). Le EditorPart a de toute façon une référence au parent WebPart au moyen de la propriété EditorPart.WebPartToEdit.