I. Introduction▲
Les webparts verbs sont des actions qui apparaissent dans le menu d'une webpart
Ils peuvent exécuter du code client et/ou serveur. Nous allons développer un exemple illustrant la création d'un verbe exécutant à la fois des actions du côté client et du côté serveur.
II. Le code▲
Dans notre exemple, nous allons créer 2 verbs, l'un exécutant du code client et l'autre du code server.
Pour cela, commençons par créer une webpart
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.ComponentModel;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Data;
using Microsoft.SharePoint.Utilities;
namespace Coforcert {
public class VerbWP : WebPart {
}
}Puis, overridons la propriété Verbs et déclarons les variables et EventHandler que nous allons utiliser
namespace Coforcert {
public class VerbWP : WebPart {
string openGooglejs;
public void OpenGoogleServer(object sender, WebPartEventArgs e) {
}
public override WebPartVerbCollection Verbs {
get {
List<WebPartVerb> verbs = new List<WebPartVerb>();
WebPartVerb clientVerb = new WebPartVerb(Guid.NewGuid().ToString(), openGooglejs);
clientVerb.Description = "Open Google wiht a client script in an external window";
clientVerb.Text = "Open Google from Client";
verbs.Add(clientVerb);
WebPartEventHandler serverHandler = new WebPartEventHandler(OpenGoogleServer);
WebPartVerb serverVerb = new WebPartVerb(Guid.NewGuid().ToString(), serverHandler);
serverVerb.Description = "Open Google wiht a server script in an external window";
serverVerb.Text = "Open Google From Server";
verbs.Add(serverVerb);
WebPartVerbCollection verbcoll = new WebPartVerbCollection(base.Verbs, verbs);
return verbcoll;
}
}
}
}Dans notre propriété Verbs, nous créons une liste pour recevoir nos verbs et ensuite nous créons 2 WePartVerb, l'un qui va exécuter du code client et l'autre du code serveur. Puis nous créons une WebPartVerbCollection qui va nous servir à fusionner les verbs existant avec les nouveaux verbs. Nous sommes obligés de passer par la création cette collection, car elle est en lecture seule, et nous ne pouvons donc plus la modifier une fois créée. Ceci étant fait, il ne nous reste plus qu'à écrire notre code client,
string openGooglejs = "window.open('http://www.google.fr','Google')";Puis notre code serveur,
public void OpenGoogleServer(object sender, WebPartEventArgs e) {
this.Context.Response.Redirect("http://www.google.fr");
}Et le tour est joué. Voici le code complet de cet exemple
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.IO;
using System.ComponentModel;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Data;
using Microsoft.SharePoint.Utilities;
namespace Coforcert {
public class VerbWP : WebPart {
string openGooglejs = "window.open('http://www.google.fr','Google')";
public void OpenGoogleServer(object sender, WebPartEventArgs e) {
this.Context.Response.Redirect("http://www.google.fr");
}
public override WebPartVerbCollection Verbs {
get {
List<WebPartVerb> verbs = new List<WebPartVerb>();
WebPartVerb clientVerb = new WebPartVerb(Guid.NewGuid().ToString(), openGooglejs);
clientVerb.Description = "Open Google wiht a client script in an external window";
clientVerb.Text = "Open Google from Client";
verbs.Add(clientVerb);
WebPartEventHandler serverHandler = new WebPartEventHandler(OpenGoogleServer);
WebPartVerb serverVerb = new WebPartVerb(Guid.NewGuid().ToString(), serverHandler);
serverVerb.Description = "Open Google wiht a server script in an external window";
serverVerb.Text = "Open Google From Server";
verbs.Add(serverVerb);
WebPartVerbCollection verbcoll = new WebPartVerbCollection(base.Verbs, verbs);
return verbcoll;
}
}
}
}Et voici le résultat lorsque le webpart est déployé


