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