Uma introdução ao desenvolvedor do SharePoint Laboratório prático Manual do laboratório SPCHOL306 – Como usar o Silverlight com o Modelo de Objeto Cliente – C# Este documento é fornecido “no estado em que se encontra”. As informações e exibições expressas neste documento, incluindo URLs e outras referências a sites da Internet, podem ser alteradas sem aviso prévio. Você assume o risco de usá-lo. Este documento não oferece a você quaisquer direitos legais sobre propriedade intelectual em qualquer produto da Microsoft. Este documento pode ser copiado e usado para fins internos e de referência. © 2010 Microsoft. Todos os direitos reservados. Sumário SPCHOL306 – COMO USAR O SILVERLIGHT COM O MODELO DE OBJETO CLIENTE ................................... 2 Objetivo do laboratório ........................................................................................................................................... 2 Recursos adicionais ............................................................................................................................................... 2 Guia de Introdução ................................................................................................................................................. 2 Como fazer logon na máquina virtual ................................................................................................................ 2 Locais ................................................................................................................................................................. 2 Pré-requisitos para o laboratório........................................................................................................................ 3 Como copiar os exemplos de código do documento do Word .......................................................................... 3 Trechos de código ............................................................................................................................................. 4 Exercício 1 – Criar um aplicativo do Silverlight para o Modelo de Objeto Cliente do SharePoint ......................... 5 Tarefa 1 – Criar um projeto de aplicativo do Silverlight ..................................................................................... 5 Tarefa 2 – Escrever um código para acessar e processar Dados de lista do SharePoint ................................ 8 Tarefa 3 – Implantar e testar usando a Web Part do SharePoint Silverlight ................................................... 12 Exercício 2 – Como criar um gráfico usando o Modelo de Objeto do SharePoint e os controles de geração de gráfico do Silverlight ........................................................................................................................................ 14 Tarefa 1 – Criar um projeto de aplicativo do Silverlight ................................................................................... 14 Tarefa 2 – Escrever o código para acessar os Dados da lista do SharePoint do funcionário e exibi-los em um controle de gráfico do Silverlight ......................................................................................................... 18 Tarefa 3 – Implantar e testar usando a Web Part de geração de gráficos do SharePoint Silverlight ............. 22 Resumo do laboratório ......................................................................................................................................... 24 Página 1 SPCHOL306 – Como usar o Silverlight com o Modelo de Objeto Cliente Tempo estimado para conclusão deste laboratório: 30 minutos É necessário ter o Visual Studio 2010, o SharePoint Foundation 2010 e o Silverlight 3 Toolkit para estes exercícios. Eles estão instalados na máquina virtual usada nesse laboratório. Objetivo do laboratório O objetivo deste laboratório é aprender sobre como criar e hospedar aplicativos do Silverlight no SharePoint 2010 e como usar o Modelo de Objeto Cliente do SharePoint para acessar dados do SharePoint a partir do Silverlight. Criar um aplicativo básico do Silverlight que exibe uma lista do SharePoint dentro de uma grade de dados e implantar o aplicativo do Silverlight no SharePoint. Criar um aplicativo do Silverlight que exibe dados da lista do SharePoint em um gráfico usando os controles de geração de gráficos do Silverlight. Recursos adicionais Este laboratório inclui os seguintes recursos adicionais: Este manual do laboratório SPCHOL306_Manual_CS.docx Este documento Código-fonte \Supporting Files\SPCHOL306\Completed\CS\Ex1\ \Supporting Files\SPCHOL306\Completed\CS\Ex2\ Código-fonte do laboratório concluído em C#. Recursos \Supporting Files\SPCHOL306\Resources\CS\ Diversos recursos usados em todo este laboratório. Guia de Introdução Como fazer logon na máquina virtual Faça logon na máquina virtual como o seguinte usuário: Nome de usuário: Administrador Senha: pass@word1 Locais Este Laboratório prático contém diversos recursos em locais fixos. Por padrão, supõe-se que o diretório HOL base seja C:\Content Packs\Packs\SharePoint 2010 Developer Labs 1.0\Supporting Files\SPCHOL306\Resources. A pasta de trabalho padrão para este laboratório é C:\SPHOLS\SPCHOL306. Página 2 Pré-requisitos para o laboratório Navegue até o diretório HOL base Supporting Files\SPCHOL306\ Resources e execute o script do PowerShell optimize.ps1: 1. Clique com o botão direito do mouse em optimize.ps1 e selecione Executar com o PowerShell: Figura 1 - Executar o script do PowerShell 2. Isso abrirá uma janela do PowerShell para executar o script. Aguarde até a conclusão do script do PowerShell e fechamento da janela do PowerShell (isso pode demorar um pouco): Figura 2 - Janela do PowerShell executando o script Como copiar os exemplos de código do documento do Word Copiar e colar o código desse documento do Word para o Visual Studio é seguro apenas para as seções de código formatado, por exemplo: Console.WriteLine("Este código é seguro!"); O código que não estiver nessas seções poderá conter Unicode ou outros caracteres invisíveis que não são códigos XML ou C#/VB válidos, por exemplo:: Console.WriteLine(“Este código NÃO é seguro!”); Página 3 Trechos de código Também é possível usar os trechos de código para inserir o código apropriado no laboratório. Para usar o trecho de código necessário para este laboratório: Clique com o botão direito do mouse no arquivo de código no qual você deseja inserir o trecho de código. Selecione Inserir Trecho: Figura 3 - Menu de contexto do código do Visual Studio. Selecione os trechos de código da galeria Meus Trechos de Código. Página 4 Exercício 1 – Criar um aplicativo do Silverlight para o Modelo de Objeto Cliente do SharePoint Neste exercício, criaremos um aplicativo básico do Silverlight que exibe uma lista do SharePoint dentro de uma grade de dados. Os dados da lista foram recuperados do servidor. Portanto, eles estão disponíveis no Silverlight usando o Modelo de Objeto Cliente do SharePoint. Usaremos uma solução do Visual Studio 2010 e vamos implantá-la no servidor local do SharePoint. Tarefa 1 – Criar um projeto de aplicativo do Silverlight Começaremos criando um projeto de aplicativo Silverlight padrão. 1. Abra o Visual Studio 2010 em Iniciar | Todos os Programas | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010. 2. No menu, selecione Arquivo | Novo | Projeto. 3. Na caixa de diálogo Novo Projeto, expanda o menu esquerdo Modelos Instalados para Outros Tipos de Projeto | Soluções do Visual Studio | Solução em Branco. 4. Selecione .NET Framework 3.5. 5. Nomeie a solução como Começar. 6. Insira C:\SPHOLS\SPCHOL306\CS\Ex1\ na caixa de texto Localização. Figura 4 - Caixa de diálogo Novo Projeto 7. Pressione OK para continuar. Página 5 8. No menu, selecione Arquivo | Adicionar | Novo Projeto. 9. Na caixa de diálogo Novo Projeto, expanda o menu esquerdo Modelos Instalados até Visual C# | Silverlight e escolha o tipo de projeto Aplicativo de Silverlight na lista de tipos de projeto na seção central da tela. 10. Selecione .NET Framework 3.5. 11. Nomeie o projeto SPSilverlightExample. 12. Não mude a localização. Figura 5 - Caixa de diálogo Adicionar Novo Projeto 13. Pressione OK para continuar. Figura 6 - Caixa de diálogo Adicionar Aplicativo do Silverlight 14. Pressione OK para criar o projeto. Página 6 15. No projeto SPSilverlightExample, adicionaremos os assemblies de referência ao Modelo de Objeto Cliente do SharePoint Silverlight. Clique com o botão direito do mouse em Referências no projeto SPSilverlightExample e selecione Adicionar Referências. 16. Navegue até a pasta “C:\Arquivos de Programas\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin”. 17. Selecione Microsoft.SharePoint.ClientSilverlight.dll e Microsoft.SharePoint.Client.Silverlight.Runtime.dll (mantenha a tecla CTRL pressionada para selecionar vários arquivos) 18. Pressione OK para adicionar as referências de dll selecionadas. Figura 7 - Adicionar Referências Página 7 Tarefa 2 – Escrever um código para acessar e processar Dados de lista do SharePoint 1. No Visual Studio, abra a Caixa de ferramentas e expanda Controles do Silverlight. 2. Arraste um controle DataGrid até a Grade existente no Designer do Silverlight, Page.xaml. Figura 8 - Caixa de ferramentas de controle do Silverlight Página 8 3. Expanda o DataGrid até que ocupe toda a página por meio das propriedades da grade e definindo sua propriedade Width e Height como Auto, e suas propriedades HorizontalAlignment e VerticalAlignment como Top e sua Margin como 0. Figura 9 - Propriedades do DataGrid 4. Além disso, marque AutoGenerateColumns (ou defina seu valor como true no XAML). Figura 10 - Propriedade de geração automática de colunas 5. Abra o App.xaml.cs e adicione as seguintes instruções de uso na parte superior do arquivo: using Microsoft.SharePoint.Client; using System.Threading; Trecho de código: Meus Trechos de Código | spchol306_ex1_app_namespaces 6. Adicione o seguinte código ao início do método Application_Startup. ApplicationContext.Init(e.InitParams, SynchronizationContext.Current); Trecho de código: Meus Trechos de Código | spchol306_ex1_application_startup Página 9 7. Abra o MainPage.xaml.cs e adicione a seguinte instrução de uso na parte superior do arquivo: using Microsoft.SharePoint.Client; Trecho de código: Meus Trechos de Código | spchol306_ex1_page_namespaces 8. Adicione a seguinte classe antes da classe MainPage: public class Project { public string Title { get; set; } public DateTime DueDate { get; set; } public string Description { get; set; } } Trecho de código: Meus Trechos de Código | spchol306_ex1_classes 9. Adicione as seguintes variáveis à classe MainPage: private ListItemCollection _projects; Trecho de código: Meus Trechos de Código | spchol306_ex1_property 10. Adicione o seguinte código ao construtor Page abaixo da chamada para InitializeComponent: ClientContext context = new ClientContext(ApplicationContext.Current.Url); context.Load(context.Web); List Projects = context.Web.Lists.GetByTitle("Projects"); context.Load(Projects); CamlQuery query = new Microsoft.SharePoint.Client.CamlQuery(); string camlQueryXml = "<View><Query><Where><Gt>" + "<FieldRef Name='Due_x0020_Date' />" + "<Value Type='DateTime'>2008-01-1T00:00:00Z</Value>" + "</Gt></Where></Query><ViewFields>" + "<FieldRef Name=\"Title\" /><FieldRef Name=\"Description\" />" + "<FieldRef Name=\"Due_x0020_Date\" />" + "</ViewFields></View>"; query.ViewXml = camlQueryXml; _projects = Projects.GetItems(query); context.Load(_projects); context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnRequestSucceeded), null); Trecho de código: Meus Trechos de Código | spchol306_ex1_initializecomponent Página 10 11. Adicione o seguinte código após o construtor: private void OnRequestSucceeded(Object sender, ClientRequestSucceededEventArgs args) { // this is not called on the UI thread Dispatcher.BeginInvoke(BindData); } private void BindData() { List<Project> projects = new List<Project>(); foreach (ListItem li in _projects) { projects.Add(new Project() { Title = li["Title"].ToString(), DueDate = Convert.ToDateTime(li["Due_x0020_Date"].ToString()), Description = li["Description"].ToString() }); } dataGrid1.ItemsSource = projects; // must be on UI thread } Trecho de código: Meus Trechos de Código | spchol306_ex1_methods Esse código inicializa o contexto do modelo de objeto cliente do SharePoint Silverlight (ClientContext). Em seguida, obtém uma referência à lista Projetos e executa um consulta simples de CAML com base na lista a fim de obter todos os projetos com uma data de vencimento superior a 1/1/2008. Os resultados são convertidos em uma lista de Projetos e associados ao controle de DataGrid do Silverlight. Página 11 Tarefa 3 – Implantar e testar usando a Web Part do SharePoint Silverlight Para implantar a solução no SharePoint, o arquivo .xap resultante criado pelo projeto do Silverlight precisa estar na pasta C:\Arquivos de Programas\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin. 1. Clique com o botão direito do mouse no projeto SPSilverlightExample, selecione Propriedades e a guia Compilar. 2. Mude o caminho de saída para C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin. Figura 11 - Propriedades do projeto 3. Compile a solução. O arquivo .xap foi copiado no diretório do SharePoint solicitado e você está pronto para adicionar a web part do Silverlight ao site do SharePoint. 4. Abra o Internet Explorer e navegue até http://intranet.contoso.com. 5. Selecione o ícone Editar na parte superior da página. 6. Selecione a guia Inserir e clique em Web Part. 7. Na lista Categorias, selecione Mídia e Conteúdo, escolha Web Part do Silverlight na lista de Web Parts e clique em Adicionar. Página 12 8. Na caixa de diálogo Web Part do Silverlight que aparece, insira /_layouts/ClientBin/SPSilverlightExample.xap como o URL. Figura 12 - Caixa de diálogo Url da Web Part do Silverlight 9. Clique em OK para salvar a Web Part do Silverlight. 10. Saia do modo de edição. 11. A Web Part final parecerá com o seguinte na página do SharePoint: Figura 13 - Web Part concluída do Silverlight Neste exercício, você criou um aplicativo básico do Silverlight que exibe uma lista do SharePoint dentro de uma grade de dados. Os dados da lista foram recuperados do servidor. Portanto, eles estão disponíveis no Silverlight usando o Modelo de Objeto Cliente do SharePoint. Página 13 Exercício 2 – Como criar um gráfico usando o Modelo de Objeto do SharePoint e os controles de geração de gráfico do Silverlight No exercício dois usaremos novamente o Modelo de Objeto do SharePoint para acessar os dados da lista do SharePoint, mas, desta vez, usaremos o LINQ e os controles de geração de gráfico do Silverlight para exibir os dados em um gráfico. Tarefa 1 – Criar um projeto de aplicativo do Silverlight 1. Abra o Visual Studio 2010 em Iniciar | Todos os Programas | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010. 2. No menu, selecione Arquivo | Novo | Projeto. 3. Na caixa de diálogo Novo Projeto, expanda o menu esquerdo Modelos Instalados para Outros Tipos de Projeto | Soluções do Visual Studio | Solução em Branco. 4. Nomeie a solução como Começar. 5. Mude a localização para C:\SPHOLS\SPCHOL306\CS\Ex2\ Figura 14 - Caixa de diálogo Novo Projeto 6. Pressione OK para continuar. Página 14 7. No menu, selecione Arquivo | Adicionar | Novo Projeto. 8. Na caixa de diálogo Novo Projeto, expanda o menu esquerdo Modelos Instalados até Visual C# | Silverlight e escolha o tipo de projeto Aplicativo Silverlight na lista de tipos de projeto na seção central da tela. 9. Nomeie o projeto SilverlightEmployeeContributionsGraph. 10. Não mude a localização. Figura 15 - Caixa de diálogo Adicionar Novo Projeto 11. Clique em OK. Página 15 Figura 16 - Caixa de diálogo Adicionar Aplicativo do Silverlight 12. Pressione OK para criar o projeto. 13. No projeto SPSilverlightExample, adicionaremos os assemblies de referência ao Modelo de Objeto Cliente do SharePoint Silverlight. Clique com o botão direito do mouse em Referências no projeto SilverlightEmployeeContributionsGraph e selecione Adicionar Referências. 14. Navegue até a pasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin. 15. Selecione Microsoft.SharePoint.ClientSilverlight.dll e Microsoft.SharePoint.Client.Silverlight.Runtime.dll (mantenha a tecla CTRL pressionada para selecionar vários arquivos) Página 16 16. Pressione OK para adicionar as referências de dll selecionadas. Figura 17 - Adicionar Referências 17. Adicione uma referência ao assembly de Controles de geração de gráfico do Silverlight. Ele está disponível na guia .NET e é chamado System.Windows.Controls.DataVisualization.Toolkit. Figura 18 - Adicionar referência de visualização de dados Página 17 Tarefa 2 – Escrever o código para acessar os Dados da lista do SharePoint do funcionário e exibi-los em um controle de gráfico do Silverlight 1. No Gerenciador de Soluções, clique com o botão direito do mouse no arquivo App.xaml e selecione Exibir Código. Abra o App.xaml.cs e adicione as seguintes instruções de uso na parte superior do arquivo: using Microsoft.SharePoint.Client; using System.Threading; Trecho de código: Meus Trechos de Código | spchol306_ex2_app_namespaces 2. Adicione o seguinte código ao início do método Application_Startup. ApplicationContext.Init(e.InitParams, SynchronizationContext.Current); Trecho de código: Meus Trechos de Código | spchol306_ex2_application_startup 3. No XAML, exiba o arquivo MainPage.xaml e adicione o seguinte namespace XML ao elemento UserControl: xmlns:chartingToolkit="clrnamespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Wind ows.Controls.DataVisualization.Toolkit" Página 18 4. Adicione o seguinte controle de geração de gráfico do Silverlight dentro do elemento Grid: <chartingToolkit:Chart x:Name="chart" Width="350" Height="250" Title="Team Contributions"> <chartingToolkit:Chart.Series> <chartingToolkit:ColumnSeries ItemsSource="{Binding}" DependentValuePath="Contributions" IndependentValuePath="Name" AnimationSequence="FirstToLast" Title="Contributions" IsSelectionEnabled="True" /> </chartingToolkit:Chart.Series> </chartingToolkit:Chart> Figura 19 - XAML de gráfico do Silverlight 5. Abra o MainPage.xaml.cs e adicione a seguinte instrução de uso na parte superior do arquivo: using Microsoft.SharePoint.Client; Trecho de código: Meus Trechos de Código | spchol306_ex2_page_namespaces Página 19 6. Adicione as seguintes classes antes da classe MainPage: public class EmployeeContributions { publicstring Name { get; set; } publicstring TeamName { get; set; } publicdecimal Contributions { get; set; } } public class TeamContributions { publicstring Name { get; set; } publicdecimal Contributions { get; set; } } Trecho de código: Meus Trechos de Código | spchol306_ex2_classes 7. Adicione as seguintes variáveis à classe MainPage: privateListItemCollection _employees; Trecho de código: Meus Trechos de Código | spchol306_ex2_property 8. Adicione o seguinte código ao construtor Page abaixo da chamada para InitializeComponent: ClientContext context = new ClientContext(ApplicationContext.Current.Url); context.Load(context.Web); List employees = context.Web.Lists.GetByTitle("Employees"); context.Load(employees); CamlQuery query = newCamlQuery(); string camlQueryXml = null; query.ViewXml = camlQueryXml; _employees = employees.GetItems(query); context.Load(_employees); context.ExecuteQueryAsync(newClientRequestSucceededEventHandler(OnRequestSucceede d), null); Trecho de código: Meus Trechos de Código | spchol306_ex2_initializecomponent Página 20 9. Adicione o seguinte código após o construtor: private void OnRequestSucceeded(Object sender, ClientRequestSucceededEventArgs args) { // this is not called on the UI thread Dispatcher.BeginInvoke(BindData); } private void BindData() { List<EmployeeContributions> employees = new List<EmployeeContributions>(); // get list item values into a strongly typed class foreach (ListItem li in _employees) { employees.Add(new EmployeeContributions { Name = li["Title"].ToString(), TeamName = li["Team"].ToString(), Contributions = Convert.ToDecimal(li["Contribution_x0020__x0028_in_x00"]) }); } // use linq to group employees on team name and then total team contributions List<TeamContributions> teams = employees .GroupBy(e => e.TeamName) .Select(t => new TeamContributions { Name = t.Key, Contributions = t.Sum(e => e.Contributions) }).ToList(); chart.DataContext = teams; // must be on UI thread } Trecho de código: Meus Trechos de Código | spchol306_ex2_methods 10. Assim como o exercício anterior, o modelo de objeto cliente do SharePoint Silverlight é usado para recuperar dados de uma lista do SharePoint. Após o preenchimento dos itens de contribuição do funcionário em uma lista, o LINQ será usado para agrupar os funcionários em equipes e reunir suas contribuições. Em seguida, as contribuições da equipe serão definidas como a fonte de dados do gráfico. Página 21 Tarefa 3 – Implantar e testar usando a Web Part de geração de gráficos do SharePoint Silverlight Para implantar a solução no SharePoint, o arquivo .xap resultante criado pelo projeto do Silverlight precisa estar na pasta C:\Arquivos de Programas\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin. 1. Clique com o botão direito do mouse no projeto SilverlightEmployeeContributionsGraph, selecione Propriedades e a guia Compilar. 2. Mude o caminho de saída para C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\ClientBin. Figura 20 - Propriedades do projeto do Silverlight 3. Compile a solução. O arquivo .xap foi copiado no diretório do SharePoint solicitado e você está pronto para adicionar a web part do Silverlight ao site do SharePoint. 4. Abra o Internet Explorer e navegue até http://intranet.contoso.com. 5. Atualizaremos a Web Part do Silverlight adicionada no exercício anterior para apontar para o novo controle de geração de gráfico do Silverlight que acabamos de criar. Clique no ícone suspenso no canto superior direito da Web Part do Silverlight e selecione Editar Web Part. Página 22 Figura 21 - Propriedades da Web Part do Silverlight 6. Clique no botão Configurar (talvez seja necessário rolar a janela para a direita para ver o botão Configurar) e insira /_layouts/ClientBin/SilverlightEmployeeContributionsGraph.xap na caixa de diálogo Web Part do Silverlight. Figura 22 - URL da Web Part do Silverlight 7. Clique em OK. 8. Clique em OK na parte inferior da barra lateral da Web Part do Silverlight. Página 23 9. A Web Part final parecerá com a seguinte: Figura 23 - Web Part de gráfico do Silverlight concluída Resumo do laboratório Neste laboratório, você realizou os seguintes exercícios. Criou um novo projeto de aplicativo do Silverlight Adicionou referências às dlls do modelo de objeto do SharePoint Silverlight. Escreveu um código para obter dados do SharePoint usando um modelo de objeto do SharePoint Implantou um aplicativo do Silverlight no SharePoint e o exibiu na nova web part do SharePoint Silverlight. Exibiu dados da lista do SharePoint em uma grande de dados do Silverlight. Usou o LINQ para manipular itens de uma lista do SharePoint. Exibiu dados da lista do SharePoint em um gráfico de barras de geração de gráficos do Silverlight. Página 24