Turn on more accessible mode
Skip Ribbon Commands
Skip to main content
Turn on Animations

Modificar el menú de opciones de una WebPart

WebParts


Cada WebPart tiene un menú de opciones (pequeña flecha hacia abajo, en la esquina superior derecha de la WebPart), que presenta alguna funcionalidad estándar: Minimizar, Cerrar, Exportar, etc.
Autor: Gustavo

El menú se puede modificar programaticamente utilizando un "Override" del método "CreateWebPartMenu" en el codigo fuente de la WebPart (necesita disponer del codigo fuente; este método no funciona para WebParts que ya estan instaladas):

public override void CreateWebPartMenu()
{
   MenuItem MenuPrimario;
   MenuItem ClickServer;
   MenuItem ClickCliente;

   try
   {
     base.CreateWebPartMenu();

     MenuPrimario = new MenuItem("MenuPrimario", "", "ParentItemID");
     ClickServer = new MenuItem("ClickEnServer", "ClickServer", new EventHandler(OnMyClick));
     ClickCliente = new MenuItem("ClickEnCliente", "javascript:alert(´Un Click en el Cliente´);", "ClickCliente");

     MenuPrimario.MenuItems.Add(ClickServer);
     MenuPrimario.MenuItems.Add(ClickCliente);

     int EditIndex = this.WebPartMenu.MenuItems.IndexOf(this.WebPartMenu.MenuItems.ItemFromID("MSOMenu_Edit"));
     this.WebPartMenu.MenuItems.Insert(EditIndex + 1, MenuPrimario);
     MenuPrimario.BeginSection = true;

     this.WebPartMenu.MenuItems.Remove(this.WebPartMenu.MenuItems.ItemFromID("MSOMenu_Export"));
   }
   catch(Exception ex)
   {
     Debug.Write(ex.ToString());
   }
}

Renglones 28, 29 y 30 crean tres instancias del tipo "MenuItem" que contendran definiciones de un menú primario y dos submenus.

En el renglón 36 se define el renglón primario con el nombre que aparecera en la pantalla.

En el renglón 37 se define el primer submenu, que utilizara un evento en el servidor, y en el renglón 38 el segundo submenu que utilizara un JavaScript.

En los renglones 40 y 41 se añaden los dos submenus al menú primario.

En el renglón 43 se encuentra el indexe del menú "Modificar elemento Web compartido", para que el código en el renglón 44 añada el menú primario precisamente debajo, y el renglón 45 crea un separador entre los dos.

El renglón 47 elimina la opción de "Exportar" del menú.

El evento que se llama con el primer submenu, cambia simplemente el titulo de la WebPart y el JavaScript del segundo muestra un texto sencillo, pero la funcionalidad de los dos puede ser mucho más compleja.

public void OnMyClick(object sender, EventArgs e)
{
   this.Title = "Un Click en el servidor";
}