Vamos a ver cómo podemos añadir un Verb personalizado a nuestro webpart en modo sandbox.
Un Verb en un webpart, es cada una de las acciones que tenemos disponible, cuando pulsamos sobre la flechita de las opciones de configuración del webpart. COmo siempre, una imagen vale más que mil palabras:
Como podemos apreciar en la imagen, aparece un Verb nuevo “Developed by ENCAMINA”. Si seleccionamos el verbo, nos abrirá una ventana nueva, y nos llevará a la web de ENCAMINA
En este fragmento de código tenemos el ejemplo para crear 2 verbs, uno que se ejecutará en el lado cliente, y otro en el servidor:
1 |
<span style="color: #606060" id="lnum1"> 1:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">override</span> WebPartVerbCollection Verbs |
1 |
<span style="color: #606060" id="lnum2"> 2:</span> { |
1 |
<span style="color: #606060" id="lnum3"> 3:</span> get |
1 |
<span style="color: #606060" id="lnum4"> 4:</span> { |
1 |
<span style="color: #606060" id="lnum5"> 5:</span> <span style="color: #008000">//client side verb</span> |
1 |
<span style="color: #606060" id="lnum6"> 6:</span> WebPartVerb clientSideVerb = <span style="color: #0000ff">new</span> WebPartVerb(<span style="color: #006080">"WebPartVerbsDemo_ClientSideVerb"</span>, |
1 |
<span style="color: #606060" id="lnum7"> 7:</span> <span style="color: #006080">"javascript:window.open('http://www.encamina.com/')"</span>); |
1 |
<span style="color: #606060" id="lnum8"> 8:</span> |
1 |
<span style="color: #606060" id="lnum9"> 9:</span> <span style="color: #008000">//client side verb properties</span> |
1 |
<span style="color: #606060" id="lnum10"> 10:</span> clientSideVerb.Text = <span style="color: #006080">"Developed by ENCAMINA"</span>; |
1 |
<span style="color: #606060" id="lnum11"> 11:</span> clientSideVerb.Description = <span style="color: #006080">"View ENCAMINA web site"</span>; |
1 |
<span style="color: #606060" id="lnum12"> 12:</span> clientSideVerb.ImageUrl = <span style="color: #006080">"/_layouts/images/sanquest/FeatureEncaminaIcon.png"</span>; |
1 |
<span style="color: #606060" id="lnum13"> 13:</span>  |
1 |
<span style="color: #606060" id="lnum14"> 14:</span> <span style="color: #008000">//server verb</span> |
1 |
<span style="color: #606060" id="lnum15"> 15:</span> WebPartVerb serverSideVerb = <span style="color: #0000ff">new</span> WebPartVerb(<span style="color: #006080">"WebPartVerbsDemo_ServerSideVerb"</span>, |
1 |
<span style="color: #606060" id="lnum16"> 16:</span> <span style="color: #0000ff">new</span> WebPartEventHandler(ServerSideVerbHandler)); |
1 |
<span style="color: #606060" id="lnum17"> 17:</span>  |
1 |
<span style="color: #606060" id="lnum18"> 18:</span> <span style="color: #008000">//server side verb properties</span> |
1 |
<span style="color: #606060" id="lnum19"> 19:</span> serverSideVerb.Text = <span style="color: #006080">"Server side Verb"</span>; |
1 |
<span style="color: #606060" id="lnum20"> 20:</span> serverSideVerb.Description = <span style="color: #006080">"Action executed in server side"</span>; |
1 |
<span style="color: #606060" id="lnum21"> 21:</span> serverSideVerb.ImageUrl = <span style="color: #006080">"/_layouts/images/sanquest/FeatureEncaminaIcon.png"</span>; |
1 |
<span style="color: #606060" id="lnum22"> 22:</span>  |
1 |
<span style="color: #606060" id="lnum23"> 23:</span> <span style="color: #008000">//add our verb to base verb collection</span> |
1 |
<span style="color: #606060" id="lnum24"> 24:</span> WebPartVerb[] newVerbs = <span style="color: #0000ff">new</span> WebPartVerb[] {clientSideVerb, serverSideVerb}; |
1 |
<span style="color: #606060" id="lnum25"> 25:</span> <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> WebPartVerbCollection(<span style="color: #0000ff">base</span>.Verbs, newVerbs); |
1 |
<span style="color: #606060" id="lnum26"> 26:</span> } |
1 |
<span style="color: #606060" id="lnum27"> 27:</span> } |
Para el lado servidor, definimos el manejador del evento:
1 |
<span style="color: #606060" id="lnum1"> 1:</span> <span style="color: #0000ff">protected</span> <span style="color: #0000ff">void</span> ServerSideVerbHandler(<span style="color: #0000ff">object</span> sender, WebPartEventArgs args) |
1 |
<span style="color: #606060" id="lnum2"> 2:</span> { |
1 |
<span style="color: #606060" id="lnum3"> 3:</span> Label label2 = <span style="color: #0000ff">new</span> Label(); |
1 |
<span style="color: #606060" id="lnum4"> 4:</span> label2.Text = <span style="color: #006080">"Changed by Server side Verb !!"</span>; |
1 |
<span style="color: #606060" id="lnum5"> 5:</span> <span style="color: #0000ff">this</span>.Controls.Add(label2); |
1 |
<span style="color: #606060" id="lnum6"> 6:</span> } |
Para acabar, OJO con lo que queréis hacer en el lado del servidor, ya que el evento se ejecutará antes que el CreateChildControls del WebPart, por lo que tened cuidado de que este último no sobreescriba el valor de algún control que actualicéis en el Verb.
Espero que os sirva!
Saludos.