Archive

Posts Tagged ‘SharePoint 2010’

This task is currently locked by a running workflow and cannot be edited

March 13, 2014 2 comments

Olá! 🙂

Esse post bem rapidinho… O Workflow do SharePoint “trava” as tarefas do tipo de conteúdo “WorkflowTask” para assegurar que a tarefa não seja editada enquanto o processo do Workflow aconcete. E depois que o Workflow termina de rodar, ele tira essa “trava” para que a tarefa seja editável novamente.

Ok! Comportamento esperado… mas, no decorrer do projeto, decidimos que as tarefas não seriam mais utilizadas em um Workflow e passariam as ser simplesmente tarefas atualizadas por outros mecanismos como: Forms Customizados e Event Receivers. Só que nesse caso específico a tarefa em questão herdava o Content Type de “WorkflowTasks” e então eu mesmo preciso tirar essa “trava” que o workflow faz automaticamente.

NOTA: Se sua tarefa herda do Content Type de “Tasks”, isso não é necessário.

Quando for atualizar uma tarefa que herda da “WorkflowTasks” atualize também a coluna do Workflow e assim a tarefa será editável.

item[Microsoft.SharePoint.SPBuiltInFieldId.WorkflowVersion] = 1;
item.Update(); //SPListItem

Pronto, o item será atualizado sem que a mensagem de erro seja apresentada.

Abraço!


					

Adicionando Menu de Navegação Lateral (QuickLaunch) nas páginas de WebPart do SharePoint

December 17, 2013 Leave a comment

Olá! Smile

Cenário:

Você já deve ter se deparado com uma página do SharePoint onde a navegação lateral não está sendo exibida. Provavelmente essa é uma Página de Web Part (ou WebPart Page – em inglês) nativa do SharePoint.

Claro, pode ser outra coisa… como a opção de mostrar ou não o QuickLaunch nas Configurações do Site e/ou via código. Mas no caso desse post, estou falando a página nativa mesmo, onde a opção de mostrar o QuickLaunch (Barra de Início Rápido) está como “mostrar” nas Configurações do Site (em Ações do Site).

Algumas vezes já arrumei isso, mas sempre esqueço quando preciso… então, como sempre faço, resolvi escrever para que eu possa vir ao meu blog e relembrar mais rapidamente… rs

ERRO:

Não chega a apresentar uma mensagem de erro, apenas a página abre “Tela Cheia”. Sem trazer a barra de navegação lateral.

clip_image002

clip_image004

SOLUÇÃO:

Edite a página no SharePoint Designer, em “Advanced Mode”, e remova (isso mesmo, APAGUE) esses dois trechos de código.

clip_image006

Toda a TAG “<SharePoint:UIVersionedContent>”. E também as Tags dos ContentPlaceHolders abaixo:

clip_image008

Salve a página e verifique se agora ela está exibindo o menu de navegação lateral! Smile

clip_image010

Abraço!

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!

Bancos de Conteúdo do SharePoint em modo “Suspect”

August 14, 2013 Leave a comment

Olá! Smile

Cenário:

Do dia pra noite a Central Administration do meu SharePoint parou de funcionar. Ao acessar a url da minha Central Admin, estava mostrando página não encontrada (HTTP Error 404).

Verifiquei o IIS, e estava tudo funcionando. Serviço iniciado e os diretórios do IIS, até então, tudo normal. Então vamos verificar os serviços do SQL e seus respectivos bancos de conteúdo.

ERRO:

clip_image002

Para minha surpresa e constatação do problema, o banco da minha Central Administration estava em modo “Suspect”.

SOLUÇÃO:

Primeiro, certifique-se de realizar um backup/cópia dos arquivos do seu banco de conteúdo antes de realizar as tarefas a seguir, pois iremos realizar tarefas de manutenção na base que podem corromper a mesma.

clip_image004

Feito isso, realize os comandos abaixo no SQL Management Studio para realizar as tarefas de reparo na base.

Use master

–Verique se o banco de dados de conteúdo tem algum problema

EXEC sp_resetstatus "WSS_AdminContent"

–Altera o banco de contéudo para colocá-lo em modo "Emergência"

ALTER DATABASE "WSS_AdminContent" SET EMERGENCY

DBCC checkdb(‘WSS_AdminContent’)

clip_image006

–Coloque o banco de conteúdo em modo "Single User"

ALTER DATABASE "WSS_AdminContent" SET SINGLE_USER WITH ROLLBACK IMMEDIATE

clip_image008

–Inicia a tarefa de reparação no banco de conteúdo e permita perda de dados

DBCC CheckDB(‘WSS_AdminContent’,REPAIR_ALLOW_DATA_LOSS)

–Volte o banco de conteúdo para modo "Multi-User"

ALTER DATABASE "WSS_AdminContent" SET MULTI_USER

–Certifique-se que o banco de conteúdo foi resetado

EXEC sp_resetstatus ‘WSS_AdminContent’

clip_image010

Execute um iisreset caso necessário e acesse novamente a Central Administration.

Abraço!

PowerPivot: The referenced file is not allowed on this page.

Olá! Smile

Cenário:

Depois de instalar e configurar o PowerPivot para SharePoint 2010, tentei utilizar o PowerPivot Gallery para exibir as planilhas no SharePoint de uma forma mais interativa. Afinal, isso é nativo da funcionalidade. 😉

Mas, ao tentar utilizar esse recurso, algo estava faltando, pois é apresentado um erro ao acessar a página. Vejam na seção abaixo.

ERRO:

PowerPivot: The referenced file is not allowed on this page.

clip_image001

Pelo erro, foi fácil supor que algo estava faltando no web.config.

SOLUÇÃO:

E como suspeitei, estava faltando uma entrada nos SafeControls do web.config do SharePoint. Após adicionar a entrada, a página carregou normalmente.

<SafeControl Src="~/_layouts/powerpivot/*" IncludeSubFolders="True" Safe="True" AllowRemoteDesigner="True" SafeAgainstScript="True" />

Abraço!

Erros comuns ao configurar Serviço de Busca do SharePoint 2010

Olá! Smile

Cenário:

Post rápido com dois erros comuns na configuração do serviço de busca (Search) do SharePoint 2010.

Antes de se descabelar, percebam que as soluções desses dois erros são bem simples.

ERRO 1:

CoreResultsWebPart::OnInit: Exception initializing: System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto. em Microsoft.Office.Server.Search.WebControls.CoreResultsWebPart.SetPropertiesOnQueryReader() em Microsoft.Office.Server.Search.WebControls.CoreResultsWebPart.OnInit(EventArgs e)

Se procurar no ULS do SharePoint poderá encontrar esse erro, quando estiver configurando o serviço de busca.

SOLUÇÃO 1:

Bem simples! Dê um IISRESET.

Como você acabou de configurar parte do serviço e o SharePoint já havia carregado os assemblies, agora precisamos fazer com que ele atualizar os assemblies.

ERRO 2:

Error: Access to the path ‘Global\Microsoft.SharePoint.SPIisProvisioningLock’ is denied

Se procurar no ULS do SharePoint poderá encontrar esse erro, quando estiver configurando o serviço de busca.

SOLUÇÃO 2:

Bem simples também! Reinicie os serviços de Timer (SPTimerV4) e Administration (SPAdminV4) do SharePoint.

Abraço!

Abrir Dialog em um CustomAction

February 15, 2013 Leave a comment

Olá! Smile

Cenário:

Neste post vou dar mais uma dica de utilização das funcionalidades nativas do SharePoint 2010.

Muitas vezes criamos links e/ou botões para abrir páginas, e muitas vezes queremos abrir essas páginas em dialogs (ou modal) do SharePoint.

Há inúmeras formas de fazer isso… mas você pode utilizar a função nativa do SharePoint 2010 para isso!

SOLUÇÃO:

Já mostrei como utilizar o Dialog em outro artigo (http://thiagottss.com.br/2010/04/25/usando-client-object-model-do-sharepoint-2010-para-melhorar-a-experincia-do-usurio-ux/), mas aqui está uma outra opção:

OpenPopUpPageWithTitle(url, callback, width, height,title);

Esse método está no core.js e internamente chama o SP.UI.ModalDialog (que mostrei no artigo acima) para abrir o link em Modal Dialog.

Aqui está um exemplo de utilização em um CustomAction:

<CommandUIHandlers>

<CommandUIHandler

Command="MeuCommand" CommandAction="javascript:OpenPopUpPageWithTitle(‘{SiteUrl}/Lists/MinhaLista/AllItems.aspx’, RefreshOnDialogClose, 600, 400,’Meu Custom Action’);" />

</CommandUIHandlers>

Abraço!

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

GetUserListSchema(): Failed to get the list schema XML for feature

November 20, 2012 2 comments

Olá! Smile

Cenário:

Montando pacotes de deploy para o SharePoint 2010, podemos automatizar toda a criação de fields, listas, contenttypes, etc.

Mas, dependendo da necessidade, é preciso “configurar” os pacotes com ordem de instalação de features e outras variáveis.

Quando criamos ListDefinitions e queremos criar instâncias dessas definições, usando o ListInstance no pacote, precisamos de uma pequena configuração adicional caso a ListInstance esteja em uma feature diferente da feature que está o ListDenifition.

Se não realizar essa configurações opcional (que está logo mais abaixo, na seção “Solução”), o erro abaixo é apresentado.

ERRO:

“<nativehr>0x81072101</nativehr><nativestack></nativestack>Não é possível concluir esta ação. Tente novamente.”

E nos LOGS do SharePoint (ULS), encontramos erros com um pouco mais de detalhes:

“GetUserListSchema(): Failed to get the list schema XML for feature…” e

“Failed to find the list schema for FeatureId …, list template ID …. Cannot create list in web … at URL ….”

SOLUÇÃO:

De acordo com os erros, a ListInstance não está conseguindo criar a lista baseado no template especificado (determinado no ListDefinition) por que não o encontra o schema do template.

Se o ListDefinition e o ListInstance estiverem na mesma feature, o SharePoint consegue entender e encontrar o schema. Mas, se estão em features separadas, precisamos informar qual é a feature que possui o ListDefinition, do ListInstance que estamos criando.

No Elements.xml do ListInstance, referencie a feature que tem o ListDefinition:

 

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

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"&gt;

<ListInstance Title="Minha Nova Instância"

OnQuickLaunch="TRUE"

TemplateType="10001"

FeatureId="c51f96ee-a686-4dab-8e48-f09d351b3a4f"

Url="Lists/MinhaInstancia"

Description="My List Instance">

</ListInstance>

</Elements>

 

Abraço!

Bug DateTimeControl perde “estado” no postback

October 21, 2012 1 comment

Olá! Smile

Cenário:

Já me deparei com esse “bug” algumas vezes, mas não tinha encontrado solução até então.

Ao utilizar o DateTimeControl no SharePoint 2010 e realizar alguns postbacks, o controle perdia o valor já preenchido anteriormente.

Encontrei um “workaround” para esse problema… bem #bizarro por sinal rs. Confira a seguir!

SOLUÇÃO:

Basta adicionar uma condição no método que causa o postback para o selected date do controle para que ele mantenha o estado. No meu caso, usava um DropDownList para dar postback e o evento SelectedIndexChanged coloquei minha condição:

if (dtcDateTime.SelectedDate < DateTime.Today) { }

Pronto, só isso já resolve. Não precisa fazer nada dentro da condição. Agora posso fazer quantos postbacks quiser, que o controle MANTEM o estado anterior.

Abraço!