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

Panel de Control a la medida para una WebPart

WebParts


Por medio de propiedades se pueden agregar secciones al Panel de Control de una WebPart. Pero el sistema tiene sus limitaciones, por ejemplo, no es posible construir un control DropDownList dinámicamente. A menos que se construya un Panel de Control a la medida.
Autor: Gustavo

Para aumentar la funcionalidad del Panel de Control, es necesario hacer un nuevo control derivado de la clase "ToolParts"

public override ToolPart[] GetToolParts()
{
     ToolPart[] toolparts = new ToolPart[3];
     WebPartToolPart wptp = new WebPartToolPart();
     CustomPropertyToolPart custom = new CustomPropertyToolPart();

     //Crea el panel en el primer lugar
     toolparts[0] = new MyToolPanel.MyToolPart();

     toolparts[1] = wptp;
     toolparts[2] = custom;
     return toolparts;
}

El nuevo panel hay que codificarlo en una clase separada, en donde un override del evento "Init" permite inicializar las variables necesarias

private void CustomToolPart_Init(object sender, System.EventArgs e)
{
     //Inicializar aqui lo que sea necesario
}

Con otro override del "RenderToolPart" se puede preparar el código de HTML necesario. Con un override del evento "ApplyChanges" se consigue que la WebPart aplique los cambios en el código de la WebPart misma

public override void ApplyChanges()
{
     try
     {
         //Aqui es donde las cosas interesantes ocurren...
         base.ApplyChanges();
         ToolPane tp = this.ParentToolPane;
         WebPart myWP = tp.SelectedWebPart;
         ((Label)myWP.FindControl("myTexto")).Text = "Lista seleccionada: " + myList.SelectedItem.Value;
         ChildControlsCreated = false;
         EnsureChildControls();
     }
     catch(Exception ex)
     {
         UnError = "Error: " + ex.ToString();
     }
}

Los eventos "CancelChanges" y "SyncChanges" también se pueden utilizar para transferir información a la WebPart si el usuario utiliza el botón de "Cancelar" o después de que el evento "ApplyChanges" ha terminado de actuar.

Aqui puede encontrar el codigo de la WebPart