Rodrigo Romano – MVP SharePoint Server

Registros de um Especialista SharePoint :)

Posts Tagged ‘Ribbon

Botão da Ribbon chamar um código Server-Side–SharePoint 2010

with 4 comments


Olá Pessoal,

Hoje vou dar uma dica que sempre acabo precisando: colocar um botão na Ribbon que chama um código Server-Side.

Então, vamos lá:

1- Clique no seu projeto com o botão direito e vá até Adicionar, Novo Item…

image

 

2 – Escolha Empty Element  e dê um nome adequado.

image

3 – Seguindo o modelo do passo 1, adicione uma Classe que conterá seu código Server-Side:

 

image

 

image

4 – Adicione referência ao assembly System.Web:

image

5- Adicione o código abaixo na classe criada:

 

protected override void OnLoad(EventArgs e)
{
    var postback = this.Context.Request["__EVENTTARGET"];
    var arguments = this.Context.Request["__EVENTARGUMENT"];

    if (postback != null && postback.Equals("MinhaAção"))
    {
        string[] ids = arguments.Split(new char[] { ',' }, 
           StringSplitOptions.RemoveEmptyEntries);
        foreach (string id in ids)
        {
        }
    }            
}

6 – No Elements.XML, adicione o código abaixo:

image

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <CustomAction
    Id="RibbonDemo"
    RegistrationType="List"
    RegistrationId="10000"
    Location="CommandUI.Ribbon.ListView">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
         Location="Ribbon.ListItem.Manage.Controls._children">
          <Button
           Id="Ribbon.ListItem.Manage.Controls.RibbonDemo"
           Alt="Minha Ação"
           Sequence="999"
           Image16by16="/_layouts/images/placeholder32x32.png"
           Image32by32="/_layouts/images/placeholder32x32.png"
           Command="RibbonDemo"
           LabelText="Minha Ação"
           TemplateAlias="o1"
           ToolTipTitle="Minha Ação"
           ToolTipDescription="Minha Ação"/>
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
         Command="RibbonDemo"
         CommandAction="javascript:var context = SP.ClientContext.get_current();
              var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
               var selectedItemsId = '';
                        for (index in selectedItems) {
                            selectedItemsId = selectedItemsId + ',' + selectedItems[index].id;
                        }
              __doPostBack('MinhaAção', selectedItemsId);" />
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>

  <Control Id="AdditionalPageHead"
           Sequence="90"
           ControlAssembly="$SharePoint.Project.AssemblyFullName$"
           ControlClass="" />
  
</Elements>

O código acima faz 2 coisas:

1 – Coloca o botão na Ribbon

2 – Adiciona o nosso controle ServerSideAction no Site.

OBS: A única coisa que precisamos ficar atento é com a propriedade ControlClass, que precisamos colocar o Namespace + Nome da Classe do Controle que criamos anteriormente.

Nesse caso, ficará assim: ControlClass="ExemploRibbon.ServerSideAction".

 

Agora, precisamos falar para o SharePoint que esse controle é seguro:

Clique no Empty Element do Botão, e na guia de propriedades, clique no botão “…” referente ao Safe Control Entries.

image

Clique em adicionar. A tela deverá ficar assim:

image

Após isso, tudo deverá estar funcionando corretamente. Alegre Só testar e colocar o código desejado na classe criada.

 

image

 

Se quiserem baixar a solução funcionando, podem clicar aqui: Download SharePoint Ribbon Demo.

 

É isso aí Alegre!!! Espero que essa dica ajude a todos os desenvolvedores que sofriam para conseguir fazer isso funcionar.

Written by Rodrigo Romano

November 12, 2012 at 1:30 pm