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é