Archive

Posts Tagged ‘WebPart’

WebPart ‘Navegador da Organização’ carrega vazio em sites fora da WebApplication de MySites

September 25, 2013 Leave a comment

Olá! Open-mouthed smile

Cenário:

Eu sou MUITO fã dessa WebPart nativa do SharePoint.

Navegador da Organização (Organization Browser):

clip_image002

clip_image004

Ela roda nas páginas de perfis ao configurar o servidor de User Profile do SharePoint. Mas, e se quisermos utilizar essa webpart em nossas aplicações e sites? Good idea! Hã?!

Se o site que estiver tentando adicionar a webpart de Navegador da Organização estiver na mesma WebApplication do site de MySites, ok, irá funcionar.

Mas e se o site estiver em uma WebApplication diferente? Bom aí precisamos fazer algumas configurações, pois a WebPart irá carregar “vazia”. Se você mudar para “HTML View” perceberá que a hierarquia foi montada, mas o SilverLight View não renderiza.

ERRO:

Não chega a apresentar uma mensagem de erro, apenas a webpart abre “vazia”. Sem renderizar a hierarquia.

clip_image006

SOLUÇÃO:

Precisamos criar um arquivo XML e copiar no root das WebApplication no IIS.

Então, vamos lá. Crie o arquivo ClientAccessPolicy.xml similar a este:

<?xml version="1.0" encoding="utf-8" ?>

<access-policy>

<cross-domain-access>

<policy>

<allow-from http-request-headers="*">

<domain uri="*" />

</allow-from>

<grant-to>

<resource path="/" include-subpaths="true" />

</grant-to>

</policy>

</cross-domain-access>

</access-policy>

NOTA: você definir apenas domínio do seu site, caso não queira liberar todas uri’s (*).

Após criar o arquivo, adicione o arquivo no root da WebApplication do MySites e da WebApplication onde está rodando a webpart (C:\inetpub\wwwroot\wss\VirtualDirectories).

clip_image008

Pronto! Isso deve resolver e a webpart agora irá renderizar corretamente mesmo rodando fora da WebApplication que roda o MySites.

Abraço!

Advertisements

Evento RowUpdating do GridView não está disparando

January 10, 2013 Leave a comment

Olá! Smile

Cenário:

Esse post na verdade é uma dica (#tip).

Se você utilizar vários controles com mesmo ID nos ItemTemplate e EditTemplate, o evento de Update (Atualizar) não disparada. Você clica no botão e não acontece nada. Não há postback.

ERRO:

<asp:TemplateField HeaderText="Bla bla">

<ItemTemplate>

<asp:Label ID="lbl1" runat="server" Text='<%# Eval("Valor1") %>’ />

</ItemTemplate>

<EditItemTemplate>

<asp:Label ID=" lbl1" runat="server" Text='<%# Eval("Valor1") %>’ Visible="false" />

<asp:DropDownList ID="ddl1" runat="server" />

</EditItemTemplate>

</asp:TemplateField>

SOLUÇÃO:

Utilize Ids diferentes para cada ItemTemplate. Isso fará o Update disparar o evento de RowUpdating.

<asp:TemplateField HeaderText="Bla bla">

<ItemTemplate>

<asp:Label ID="lbl1" runat="server" Text='<%# Eval("Valor1") %>’ />

</ItemTemplate>

<EditItemTemplate>

<asp:Label ID="lbl2" runat="server" Text='<%# Eval("Valor1") %>’ Visible="false" />

<asp:DropDownList ID="ddl1" runat="server" />

</EditItemTemplate>

</asp:TemplateField>

Abraço!

#GridView #RowUpdating #event #notfiring

Como Inserir e Configurar uma WebPart de Gráfico de Barras

April 17, 2012 8 comments

Olá!

Fiz esse vídeo há algum tempo, mas havia esquecido de subir e compartilhar. Bem simples, mas que pode ser útil para quem for fazer isso pela primeira vez.

No vídeo mostro como inserir e configurar uma Web Part de Gráfico de Barras, conectada a uma lista com informações do SharePoint. Infelizmente, no processo de upload para o Youtube, a qualidade do audio caiu um pouco mas acho que dá pra seguir bem.

Abraço!

Forçar Download arquivos PDF em Bibliotecas de Documentos em uma WebPart Customizada

November 17, 2011 Leave a comment

Olá! Alegre

Cenário:

Muitas vezes desenvolvendo soluções para SharePoint esbarramos com alguns “pequenos” comportamentos que o usuário solicita uma mudança.

A bola da vez foi que o comportamento padrão de arquivos PDF é abrir no browser (falando de IE, por exemplo). Então, temos uma aplicação customizada que lista os documentos de uma biblioteca e imprime o link do documento na tela para download.

Nos arquivos PDFs o browser entende e abre o documento no browser. Precisamos que seja forçado o download.

SOLUÇÃO:

Existem diversas formas de fazer isso, customizando ainda a aplicação. Mas(!) estamos trabalhando o SharePoint e com isso, temos toda a infraestrutura que já está nele!

Ora pois, o SharePoint já faz download de arquivos nativamente:

· No Ribbon

clip_image002

· No menu de contexto do item:

clip_image004

Então, por que não utilizar o que SharePoint já usa? (Sempre persiga isso! Se o SharePoint já faz, tente usar!)

Peace of cake! Com um pouco de debug feelings… descobrimos que o SharePoint simplesmente chama um página passando um parâmetro.

Ou seja, faça um simples <a href=”/_layouts/download.aspx?SourceUrl=http://sharepoint/Documents /Arquivo.pdf”></a> e o SharePoint forçará o download. 😉

clip_image006

Abraço!

DateTimeControl customizado não carrega estilo

October 5, 2011 1 comment

Olá! Smile

Cenário:

Desenvolvendo soluções customizadas para o SharePoint é bem comum utilizar o DateTimeControl (controle do SharePoint) para usuários selecionarem datas em nossos formulários.

Em determinadas situações o calendário não renderiza corretamente. Ele não carrega o estilo e fica bem feio.

ERRO:

Vejam como o calendário fica nessas situações:

clip_image002

SOLUÇÃO:

Para solucionar o problema devemos alterar a página encarregada por renderizar o calendário. No SharePoint, encontramos essa página no caminho:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS

clip_image004

Edite a página iframe.aspx e insira uma referência para carregar o arquivo CSS responsável por aplicar o estilo do calendário.

<link rel="stylesheet" type="text/css"href="/_layouts/1046/styles/datepickerv4.css"/>

NOTA: altere o 1046 para idioma do seu SharePoint. (Ex: 1046 – PT-BR, 1033 – EN-US)

O arquivo ficará parecido com o seguinte:

clip_image006

Salve o arquivo e clique no calendário para ver que ele irá carregar o estilo! Smile

clip_image008

Abraço!

Acessando e processando dados externos de planilhas via Excel Services Web Services

October 17, 2010 18 comments

Autor:

Thiago Silva

Publicação:

16/Out/10

Overview

Uma das funcionalidades do SharePoint 2010, quando o assunto é BI, é o Excel Services. Juntamente com o PerformancePoint Services e as WebParts de gráficos, eles formam uma grande ferramenta para acompanhamento de resultados e tomadas de decisão.

Essas ferramentas tem um potencial ainda maior quando os conectamos com um Analysis Services para atualizar as informações automaticamente baseando no processamento de cubos OLAP.

Neste artigo, utilizei uma planilha Excel publicada no Excel Services do SharePoint 2010. Esta planilha possui uma conexão de dados com um cubo no Analysis Services para atualizar valores de uma pivot table, e por sua vez, atualizar informações em um gráfico, usando a WebPart de gráfico que está conecta a planilha no Excel Services.

O Excel Services pode atualizar a conexão de dados quando o usuário abre a planilha, ou de tempos em tempos, mas só enquanto o usuário interage com a planilha. Ou seja, é necessário que o usuário matenha uma sessão aberta para que a atualização dos dados seja realizada.

No meu caso, eu preciso atualizar a planilha em runtime, sem interação do usuário, por que o usuário vai ver apenas a WebPart de gráficos (fiz esta conexão da WebPart de gráficos com o Excel Services por que a WebPart não acessa dados do Analysis Services diretamente).

Solução

Para essa solução vou trabalhar com os seguintes produtos e tecnologias:

· Windows 7 Enterprise;

· Microsoft SharePoint Server 2010 Enterprise;

· SQL Server 2008 Enterprise;

Neste exemplo, já tenho as aplicações funcionando. O Excel Services já está rodando a planilha que possui conexão com o cubo no Analysis Services do SQL Server e a WebPart de gráfico, por sua vez, lê as informações da planilha hospedada no Excel Services. Vejam as imagens do ambiente montado:

WebPart de Gráfico acessando planilha no Excel Services:

image

Planilha no Excel Services acessando Analysis Services:

image

Se clicarmos em “Data” e depois em “Refresh All Connections”, a conexão com os dados irá atualizar e trazer os dados atuais da fonte de dados.

image

Mas, no meu caso, preciso que esta atualização seja feita com o arquivo fechado, sem intereção do usuário. Por este, criei um TimeJob (serviço de agendamento de tarefas do SharePoint) para realizar esta operação de tempos em tempos.

Neste artigo vou usar uma WebPart, para simplificar o deploy e “start” da operação usando um botão.

Crie um projeto de Visual Web Part no Visual Studio 2010 para começarmos. Caso preciso de informações de como fazer, acesse: http://www.canalsharepoint.com.br/tutoriais/Tutoriais/SharePoint%202010%20-%20Visual%20WebParts.aspx.

1. Adicionando Excel Services Web Services

1.1. Na Solution Explorer, clique com o botão direito no projeto e selecione Add Service Reference;

image

1.2. Clique em Advanced para abrir a janela de opções avançadas, e depois clique em Add Web Reference;

image

image

1.3. Insira a URL do Excel Services Web Services do seu site, no meu caso: http://notebook01/sites/bi/_vti_bin/excelservice.asmx. Dê o nome de “ExcelServices” e depois, clique em Add Reference.

image

1.4. Adicione o seguinte código na sua WebPart:

Code Snippet
  1. using System;
  2. using System.Web.UI;
  3. using System.Web.UI.WebControls;
  4. using System.Web.UI.WebControls.WebParts;
  5.  
  6. using SharePointWebParts.Demo.ExcelServices;
  7. using Microsoft.SharePoint;
  8.  
  9. namespace SharePointWebParts.Demo.VisualWebPartTeste
  10. {
  11.     public partial class VisualWebPartTesteUserControl : UserControl
  12.     {
  13.         protected void Page_Load(object sender, EventArgs e)
  14.         {
  15.             LiteralControl lc = new LiteralControl();
  16.             lc.Text = “<h3>Clique aqui para atualizar a planilha no Excel Services!</h3>”;
  17.             this.Controls.Add(lc);
  18.  
  19.             Button btnAtualiza = new Button();
  20.             btnAtualiza.Text = “Atualizar Agora!”;
  21.             btnAtualiza.Click += new EventHandler(btnAtualiza_Click);
  22.             this.Controls.Add(btnAtualiza);
  23.         }
  24.  
  25.         void btnAtualiza_Click(object sender, EventArgs e)
  26.         {
  27.             ExcelService es = new ExcelService();
  28.  
  29.             string workbookpath = http://notebook01/sites/bi/documents/Chart.xlsx&#8221;;
  30.             Status[] outStatus;
  31.  
  32.             es.Credentials = System.Net.CredentialCache.DefaultCredentials;
  33.  
  34.             try
  35.             {
  36.                 string sessionid = es.OpenWorkbook(workbookpath, “en-US”, “en-US”, out outStatus);
  37.  
  38.                 es.Refresh(sessionid, “notebook01_sqlexpress SSAS”);
  39.  
  40.                 byte[] contents = es.GetWorkbook(sessionid, WorkbookType.FullWorkbook, out outStatus);
  41.                 
  42.                 using (SPSite site = new SPSite(SPContext.Current.Web.Url))
  43.                 {
  44.                     using (SPWeb web = site.OpenWeb())
  45.                     {
  46.                         web.AllowUnsafeUpdates = true;
  47.  
  48.                         web.Files.Add(workbookpath, contents, true);
  49.  
  50.                         web.AllowUnsafeUpdates = false;
  51.                     }
  52.                 }
  53.  
  54.                 es.CloseWorkbook(sessionid);
  55.             }
  56.             catch (Exception ex)
  57.             {
  58.                 Label lblmensagem = new Label();
  59.                 lblmensagem.Text = ex.ToString();
  60.                 this.Controls.Add(lblmensagem);
  61.             }
  62.         }
  63.     }
  64. }

 

1.5. Clique em Build e depois em Deploy Solution;

image

1.6. Adicione sua WebPart na página desejada e clique no botão “Atualizar Agora!” para fazer com nosso código acesse o Excel Services via Web Services, abra a planilha em runtime, processe os dados das conexões externas e salve a planilha atualizada.

image

1.7. Se houveram mudanças na fonte de dados, a planilha irá atualizar e, consequentemente, a WebPart de Gráficos também será atualizada.

Veja nas imagens que, no meu caso, as informações mudaram. Assim, atualizando a planilha no Excel Services e, consequentemente a WebPart de Gráficos.

Planilha no Excel Services Atualizada:

image

WebPart de Gráficos após clicar no botão da WebPart para atualizar as informações:

image

Conclusão

Neste artigo mostrei como atualizar conexões de dados externas em planilhas rodando no Excel Services em runtime usando Excel Services Web Services.

Informações adicionais:

https://thiagottss.wordpress.com/2010/10/17/acessando-e-processando-dados-externos-de-planilhas-via-excel-services-web-services-usando-uma-webapplication-e-sharepoint-2010-client-object-model/ – Acessando e processando dados externos de planilhas via Excel Services Web Services usando uma WebApplication e SharePoint 2010 Client Object Model