Desenvolvimento - Sharepoint - DevFeed de artigos deste autor

SharePoint 2010: Visual WebParts
por Wagner Amorim



Overview

Com o lançamento do SharePoint 2010 muita coisa boa veio para os IT Pros e para as equipes de Desenvolvedores que trabalham com as tecnologias e produtos SharePoint.

Hoje quero explorar um recurso que é considerado o modelo mais comum de extensibilidade do SharePoint, vamos explorar como ficaram as WebParts na nova versão do SharePoint .

A Microsoft já lançou muito material para os times de IT Pros e Desenvolvedores de SharePoint, abaixo listo alguns links que tenho utilizado:

Sharepoint 2010 Beta Developer Training Kit
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bfd1603b-7550-4b8e-be85-4215a5069b90

SharePoint 2010 Developer Center
http://msdn.microsoft.com/en-us/sharepoint/ee514561.aspx

Microsoft SharePoint Developer Documentation Team Blog
http://blogs.msdn.com/sharepointdeveloperdocs/archive/2009/10/19/SharePoint2010BetaDevDocsLive.aspx

Get Started Developing on SharePoint 2010
http://msdn.microsoft.com/en-us/sharepoint/ee513147.aspx

Office 2010 Beta Developer Training Kit
http://www.microsoft.com/downloads/details.aspx?familyid=F1599288-A99F-410F-A219-F4375DBE310C&displaylang=en

Visual Studio 2010 – Série de posts em Português.
http://reverb.leandrodaniel.com/reverb/post/Visual-Studio-2010-e28093-Serie-de-posts-chega-ao-fim.aspx

Instalando o SharePoint 2010 no Windows 7
http://www.canalsharepoint.com.br/tutoriais/Tutoriais/Instalando%20o%20SharePoint%202010%20no%20Windows%207.aspx

Solução

Para essa solução vou trabalhar com as seguintes tecnologias:

- Windows SharePoint Foundation 2010 Beta
- Microsoft® SQL Server® 2008
- Windows 7 x64
- Visual Studio 2010 Beta 2

NOTA: Eu utilizei uma instalação do SharePoint Foundation 2010, mas o artigo também se aplica ao SharePoint Server 2010.

Vou desenvolver a solução utilizando o Windows 7 como sistema operacional. Para maiores informações de instalação e configuração do SharePoint 2010 no Windows 7, veja o artigo citado acima:

Antes de iniciarmos nossa solução na prática, gostaria de apresentar um overview das WebParts.

v WebParts no SharePoint 2010

As WebParts são o meio mais comum de se customizar projetos em SharePoint, é um dever para qualquer Desenvolvedor SharePoint entender o funcionamento de uma WebPart no SharePoint, para uma apresentação do funcionamento de WebParts no SharePoint 2007 veja: http://msdn.microsoft.com/en-us/sharepoint/ee513148.aspx e http://www.canalsharepoint.com.br/tutoriais/Tutoriais/Desenvolvendo%20WebParts%20no%20SharePoint%202007.aspx.

O modelo de desenvolvimento de WebParts no SharePoint já era dividido em dois tipos desde sua versão 2007, que eram Visual WebParts (utilizando UserControls) e as WebParts conhecidas como Standard WebParts, que eram desenvolvidas e “construídas” em runtime, ou seja, sem nenhuma interação visual durante o desenvolvimento.

A Visual Webpart é na verdade uma classe que herda a classe base de WebParts ASP.NET: System.Web.UI.WebControls.WebParts.WebPart e com o método LoadControl carrega um controle ASP.NET do tipo UserControl.

NOTA: Na versão 2007 os desenvolvedores tinham um pouco de trabalho manual para utilizar controles UserControls como WebPart, o que já não é mais necessário na versão 2010.

O Visual Studio implantou um novo item no template de projeto SharePoint, essse novo item traz um modelo mais organizado e produtivo para nós desenvolvedores quando formos utilizar esse tipo de WebPart.

Após o overview desse recurso, vamos entender como implantar e utilizá-lo na prática, esse artigo é um pouco extenso, mas faz tempo que estou devendo um artigo mais completo falando sobre WebParts no SharePoint, vou tentar explorar necessidades comuns sobre esse modelo de trabalho.

1. Criando uma Visual WebPart no SharePoint 2010.

Vamos utilizar o template do Visual Studio 2010, Visual WebPart, porque esse foi o modelo com maiores mudanças na nova versão do SharePoint.

1.1. Abra o Visual Studio 2010 e clique em “File/New/Project”.

Visual Studio 2010

1.2. Na janela “New Project”, clique em “Visual C#/SharePoint/2010/Empty SharePoint Project”, renomeie o projeto para “SharePoint2010.DEV” e clique em OK.

Visual Studio

1.3. Em seguida o Visual Studio abre a janela “SharePoint Customization Wizard”, onde podemos definir para qual site será feito o Debug e Deploy, além de definirmos os níveis de segurança da solução.

Defina o site e o nível de segurança da aplicação como “Deploy as a farm solution” e clique em “Finish”.

Visual Studio 2010

NOTA: Para maiores informações do funcionamento das SandBox Solutions no SharePoint 2010, veja o artigo: http://community.bamboosolutions.com/blogs/sharepoint-2010/archive/2009/10/29/sharepoint-2010-sandbox-solution-an-overview.aspx

1.4. Adicionando uma Visual Web Part na solução.

a. Na janela “Solution Explorer”, clique com o botão direito no projeto, depois em “Add/New Item”.

b. Na janela “Add New Item”, selecione o item template “Visual Web Part”.

c. No campo name digite “VisualWP

d. Clique em “Add”.

Visual Studio

NOTA: Note na Janela “Solution Explorer” (Ctrl+W,S) que o SharePoint adicionou três arquivos (VisualWP.cs, VisualWP.webpart e Elements.xml) relacionados com a WebPart e mais três arquivos relacionados com o UserControl (VisualWPUserControl.ascx, VisualWPUserControl.ascx.cs e VisualWPUserControl.ascx.designer.cs).

Visual Studio 2010 & SharePoint 2010

Além da WebPart com o User Control, foi adicionado também uma feature (Feature1) em uma nova pasta chamada Features, essa pasta faz parte de um novo pacote de recursos disponíveis no Visual Studio 2010 para melhorar o desenvolvimento e deploy do SharePoint 2010 no Visual Studio. Bem legal!

Vamos rapidamente explorar esse novo item Feature1 adicionado ao projeto entender de forma simples seu funcionamento.

1.5. Alterando informações da Feature.

a. Clique com botão direito na Feature1 e a renomeie para “Canal SharePoint 2010”.

b. Dê um duplo clique no item “Canal SharePoint 2010”.

c. No campo “Title”, digite “Canal SharePoint – Desenvolvendo no SharePoint 2010”.

d. No campo “Description”, digite “Feature criada para ativar a Visual WebPart Demo”.

Visual Studio 2010 & SharePoint 2010

1.6. Alterando o título, a descrição e o Grupo da WebPart.

a. Clique 2 vezes no arquivo VisualWP.webpart e altere as seguintes linhas:

<property name="Title" type="string">VisualWP</property>

<property name="Description" type="string"> My Visual WebPart </property>

Para:

<property name="Title" type="string">SharePoint 2010 – Visual WebPart</property>

<property name="Description" type="string">Canal SharePoint – Primeira Visual WebPart utilizando o SharePoint 2010</property>

b. Salve e feche o arquivo “VisualWP.webpart”.

c. Dê um duplo clique no arquivo “Elements.xml“ e altere a seguinte linha:

<Property Name="Group" Value="Custom" />

Para:

Property Name="Group" Value="CanalSharePoint" />

d. Salve e feche o arquivo Elements.xml.

Após explorar de forma breve as Features no Visual Studio 2010, vamos continuar com o desenvolvimento da “Visual WebPart”.

1.7. Abra o UserControl “VisualWPUserControl.ascx”.

1.8. Certifique-se de que o modo de exibição do UserControl está como “Design”.

Visual Studio 2010 & SharePoint 2010

Para simular um exemplo mais prático, vamos criar uma WebPart “demo” de Comentários que vai inserir um registro em uma lista determinada.

1.9. Adicionando controles ao UserControl.

Adicione através da janela Toolbox do Visual Studio os seguintes controles do tipo Standard:

a. Label

ID: lblTitulo

TEXT: Canal SharePoint - Visual WebPart

b. Label

i. ID: lblNome

ii. Text: Digite seu nome:

c. TextBox

ID: txtNome

d. Label

i. ID: lblComentario

ii. Text: Comentário:

e. TextBox

ID: txtComentario

TextMode: MultiLine

f. Button

i. ID: btnComentar

ii. Text: Comentar!

Seu código HTML, no modelo Source deve ser parecido com esse:

<asp:Label ID="lblTitulo" runat="server"

Text="Canal SharePoint - Visual WebPart" style="font-family: Arial"></asp:Label>

<br /><br />

<asp:Label ID="lblNome" runat="server" Text="Digite seu nome:"

style="font-family: Arial, Helvetica, sans-serif; font-size: small"></asp:Label>

&nbsp;

<asp:TextBox ID="txtNome" runat="server" Width="161px"></asp:TextBox>

<br /><br />

<asp:Label ID="lblComentario" runat="server" Text="Comentário:"

style="font-family: Arial, Helvetica, sans-serif; font-size: small"></asp:Label>

<br />

<asp:TextBox ID="txtComentario" runat="server" TextMode="MultiLine"

Width="274px"></asp:TextBox>

<br />

<br />

<asp:Button ID="btnComentar" runat="server" Text="Comentar!" />

E sua exibição no modo Design deve ser semelhante a imagem abaixo:

Visual Studio 2010 & SharePoint 2010

1.10. Salve o UserControl.

1.11. Adicionando propriedades para sua WebPart.

Vamos criar uma propriedade na WebPart para que o usuário possa definir em qual lista serão armazenados os comentários.

a. Abra o arquivo VisualWPUserControl.ascx.cs e logo acima do método “Page_Load”, insira o código abaixo:

public string NomeLista {get; set;}

b. Salve e feche o arquivo.

c. Dê um duplo no arquivo VisualWP.cs para abrir a classe da WebPart.

d. Logo acima do método “CreateChildControls”, adicione o seguinte código:

string nomeLista = string.Empty;

[System.Web.UI.WebControls.WebParts.WebBrowsable(true),

System.Web.UI.WebControls.WebParts.WebDisplayName("Nome da Lista"),

System.Web.UI.WebControls.WebParts.WebDescription(""),

System.Web.UI.WebControls.WebParts.Personalizable(

System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared),

System.ComponentModel.Category("Configurações"),

System.ComponentModel.DefaultValue("")

]

public string NomeLista

{

get { return nomeLista; }

set { nomeLista = value; }

}

e. Altere o método CreateChildControls para o seguinte código:

protected override void CreateChildControls()

{

//Carregando o UserControl pela WebPart

VisualWPUserControl userControl = (VisualWPUserControl)this.Page.LoadControl(_ascxPath);

userControl.NomeLista = NomeLista;

Controls.Add(userControl);

base.CreateChildControls();

}

Seu arquivo VisualWP.cs deve ficar parecido com o abaixo:

using System;

using System.ComponentModel;

using System.Runtime.InteropServices;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using Microsoft.SharePoint;

using Microsoft.SharePoint.WebControls;

namespace SharePoint2010.DEV.VisualWP

{

[ToolboxItemAttribute(false)]

public class VisualWP : WebPart

{

// Visual Studio might automatically update this path when you change the Visual Web Part project item.

private const string _ascxPath = @"~/_CONTROLTEMPLATES/SharePoint2010.DEV/VisualWP/VisualWPUserControl.ascx";

public VisualWP()

{

}

string nomeLista = string.Empty;

[System.Web.UI.WebControls.WebParts.WebBrowsable(true),

System.Web.UI.WebControls.WebParts.WebDisplayName("Nome da Lista"),

System.Web.UI.WebControls.WebParts.WebDescription(""),

System.Web.UI.WebControls.WebParts.Personalizable(

System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared),

System.ComponentModel.Category("Configurações"),

System.ComponentModel.DefaultValue("")

]

public string NomeLista

{

get { return nomeLista; }

set { nomeLista = value; }

}

protected override void CreateChildControls()

{

//Carregando o UserControl pela WebPart

VisualWPUserControl userControl = (VisualWPUserControl)this.Page.LoadControl(_ascxPath);

userControl.NomeLista = NomeLista;

Controls.Add(userControl);

base.CreateChildControls();

}

protected override void RenderContents(HtmlTextWriter writer)

{

base.RenderContents(writer);

}

}

}

f. Salve o arquivo VisualWP.cs.

1.12. Inserindo programaticamente itens na lista de Comentários.

a. Abra o UserControl VisualWPUserControl.ascx.

b. Dê um duplo clique no botão Comentar (btnComentar).

NOTA: O Visual Studio vai gerar automaticamente o método “btnComentar_Click” que será acionado no evento “OnClick” do botão.

c. Insira o código abaixo no método criado no passo anterior:

NOTA: No código abaixo eu utilizo o Object Model do SharePoint para inserir programaticamente os itens do UserControl na minha lista do SharePoint, portanto deve ser importado o namespace Microsoft.SharePoint;

protected void btnComentar_Click(object sender, EventArgs e)

{

using (SPSite sitec = new SPSite(SPContext.Current.Web.Url))

{

using (SPWeb site = sitec.OpenWeb())

{

//Adicionando o item na lista

SPList Lista = site.Lists[NomeLista];

SPListItem item = Lista.AddItem();

item["Nome"] = txtNome.Text;

item["Comentario"] = txtComentario.Text;

item.Update();

//Redirecionando para a lista onde o item foi criado

Response.Redirect(String.Format("{0}/Lists/{1}", SPContext.Current.Web.Url, NomeLista));

}

}

}

NOTA: Vale a pena informar que nesse exemplo não exploramos nenhum dos recursos de validações de dados para manter integridade que são necessárias em nossas aplicações.

1.13. Realizando o Deploy

Nesse ponto o desenvolvimento da aplicação está concluído e podemos iniciar o deploy, antes disso, compile a aplicação (Ctrl+Shift+B) e resolva qualquer erro ou conflito que possa ocorrer.

a. Execute o Deploy via Visual Studio (Build/Deploy Solution).

NOTA: Repare que o Visual Studio executa os seguintes passos de forma automática:

1. Compila a aplicação.

2. Recycle no App Pool da aplicação.

3. Retract da Solution, caso exista no farm.

4. Adiciona Solution.

5. Deploy Solution.

6. Ativa Features.

b. Verificando se a Solution e as Features foram instaladas corretamente.

i. Acesse a “Central Administration” do SharePoint 2010.

ii. Clique no item “System Settings” do menu vertical da esquerda.

iii. Na seção “Farm Management”, clique em “Manage farm solutions”.

iv. Na página de “Solution Management” deve aparecer sua solution, como mostra a imagem abaixo:

SharePoint 2010 - Central Administration

v. No caso das features, feche a Central Administration e abra o site que escolheu fazer o deploy no passo 1.3.

vi. Com o site aberto, clique no item de menu “Site Actions”, depois em “Site Settings”.

SharePoint 2010 - Central Administration

vii. Na página “Site Settings”, na seção “Site Collection Administration” clique no item “Site collection features”.

viii. Nessa página deve aparecer a feature que criamos acima, conforme imagem abaixo.

SharePoint 2010 - Central Administration

1.14. Adicionando a Visual WebPart para o site.

a. Volte para a home do site.

b. Utilizando as Ribbons, clique no item “Page”, depois em “Edit Page” da página principal do site.

SharePoint 2010 - Central Administration

c. Com a página aberta em modo de edição, clique em “Add WebPart”.

d. Note que a Ribbons vai adicionar uma nova caixa com as propriedades da WebPart.

SharePoint 2010 - Ribbons

NOTA: Veja que a WebPart que adicionamos já veio com as propriedades que configuramos no passo 1.6.

e. Clique em Add.

f. Após o SharePoint ter adicionado a WebPart na página, clique selecionando a WebPart que acabou de ser adicionada e note que o Ribbons mudou, foi adicionado um novo item “Web Part Tools”.

g. Clique em “Options” nesse novo item do Ribbons e veja as novas opções disponíveis no Ribbons para WebParts.

SharePoint 2010 - Ribbons

h. Clique em “Web Part Properties”.

i. Na nova janela de propriedades que vai abrir, defina os seguintes campos:

Appearance

i. Title : Envie-nos seus comentários

Configurações

ii. Nome da Lista : Digite o nome de uma lista que você irá utilizar como lista dos comentários (ex: Comentarios)

IMPORTANTE: A lista informada no passo acima já deve existir no site atual da WebPart, lembrando que essa lista também deve conter os campos citados no passo 1.13.C.

Sharepoint 2010 - WebParts

j. Clique em OK.

k. Saia do modo de edição da página.

1.15. Finalizando e Testando

a. Para finalizar e testar sua WebPart, basta inserir informações nos campos apresentados e clicar no botão “Comentar”.

SharePoint 2010 - WebParts

b. Você será redirecionado para a lista, verifique se o item foi inserido corretamente:

SharePoint 2010 - WebParts

Lembrando que o foco desse artigo não é se profundar nas regras de negócio, facilmente um desenvolvedor consegue customizar esse exemplo com regras de negócio interessantes.

Conclusão

Nesse artigo exploramos de uma forma mais ampla o funcionamento das Visual WebParts no SharePoint, além de conseguirmos até apresentar uma boa experiência de navegação pelo produto, passando um pouco pelas Ribbons e pela nova Central Administration.

Wagner Amorim

Wagner Amorim - Consultor com 7 anos de experiência no mercado de TI, já atuou em diversos projetos para médias e grandes empresas. Focado em tecnologias Microsoft, têm se especializado nas Tecnologias SharePoint e Microsoft .NET desde 2003. Membro ativo das comunidades Technet e MSDN voltadas para SharePoint e Líder da maior Comunidade de SharePoint no Brasil (Canal SharePoint).
Possui as certificações MCP: .NET Framework 2.0, MCTS: .NET Framework 2.0 Web Applications, Windows SharePoint Services 3.0: AD, Windows SharePoint Services 3.0: Config., Microsoft Office SharePoint Server 2007: Config., Microsoft Office SharePoint Server 2007: AD e MCPD: Web Developer.
Blog:
http://waamorim.spaces.live.com/


Comentários

blog comments powered by Disqus