L'arte di lavorare con le WebPart - #2

Secondo post sull'argomento WebParts Framework.

Vediamo come "rivisitare" un altro componente che serve per ospitare le Web Parts in zone diverse della pagina web: il WebPartZone.

Prima di tutto, cosa offre? Il WebPartZone deriva dalla classe WebPartZoneBase, che a sua volta deriva da WebZone, che deriva da CompositeControl; in effetti una WebPartZone non è altro che un controllo Web composto in grado di ospitare al suo interno altri controlli compositi, le Web Parts.  

In questo post vorrei porre l'attenzione su una caratteristica in particolare: i Verbi.

Si da per assunta la conoscenza di base del Web Part Framework quindi non spiego cosa sono i Verbi, bensì illustro un semplice modo per estendere il WebPartZone e far si che ad ogni Web Part condivisa o personalizzata per uno specifico utente, inclusa nella Zone, venga associato il verbo "Edit".

protected override void OnCreateVerbs(WebPartVerbsEventArgs e)
{
    
base.OnCreateVerbs(e);
    
this.EditVerb.Visible = false;
    Collection verbs = 
new Collection();
    HttpContext ctx = HttpContext.Current;
    
if (ctx.Request.IsAuthenticated)
    {
        WebPartVerb editVerb = 
new WebPartVerb("editVerb", new WebPartEventHandler(HandleEditClick));
        verbs.Add(editVerb);
        
if (WebPartManager.Personalization.Scope == PersonalizationScope.Shared)
        {
            editVerb.Text = "Modifica Web Part condivisa"
        }
        
else
        
{
            editVerb.Text = "Modifica Web Part"
        }
    }
    e.Verbs = 
new WebPartVerbCollection(verbs);
}

In questo modo ogni webpart aggiunta nella Zone avrà, cliccando, nel suo menù a tendina il suddetto verbo, oltre ai verbi di default.

void HandleEditClick(object sender, WebPartEventArgs e)
{
    WebPartManager wpm = (WebPartManager)  WebPartManager.GetCurrentWebPartManager(
this.Page); 

    wpm.DisplayMode = WebPartManager.EditDisplayMode;

    WebPart wp = e.WebPart;
    
if (wp != null && wp != wpm.SelectedWebPart)
        wpm.BeginWebPartEditing(wp);
}

powered by IMHO 1.3

«novembre»
domlunmarmergiovensab
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789