Inquiridor
Problema no EventReceiver

Pergunta
-
Bom dia a todos,
Fiz um eventreceiver, para que toda vez que o usuário insira um novo registro, um campo receba um valor automaticamente, um link. Faço o build da aplicação e não me dá erro algum, instalo ela e ativa, sem problema algum, mas ela não esta funcionando...??? Porque...???
Abaixo segue os códigos.
Class.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using System.Text.RegularExpressions;namespace ClassPacto
{
public class PactoParecer : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
SPListItem Item = properties.ListItem;
SPFieldUrlValue value = new SPFieldUrlValue();
value.Description = "Parecer";
string url = String.Format("http://srvwra12/sites/pacto/Lists/Tarefas/NewForm.aspx?Title={0}+Devedor={1}+Cliente={2}+Processo={3}", Item["Title"], Item["Devedor"], Item["Cliente"], Item["N_x00ba__x0020_do_x0020_Processo"]);
url = Regex.Replace(url, "[0-9];#", "");
value.Url = url;
Item["Parecer"] = value;
Item.SystemUpdate();
}
}
}
Elements.xml
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="100" ListTemplateOwner="2DF26521-E1E1-4781-80D6-8E2FA320B69F">
<Receiver>
<Name>Item Adicionado</Name>
<Type>ItemAdded</Type>
<SequenceNumber>10001</SequenceNumber>
<Assembly>PactoParecer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=27022ff382474ca0</Assembly>
<Class>ClassPacto.PactoParecer</Class>
<Data></Data>
<Filter></Filter>
</Receiver>
</Receivers>
</Elements>
Feature.xml
<?xml version="1.0" encoding="utf-8" ?>
<Feature Scope="Web"
Title="PactoParecer"
Description="EventReceiver que adiciona o link a coluna parecer."
Id="4841C1BB-0B6F-408F-B0CD-1FD887494A06"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="Elements.xml"/>
</ElementManifests>
</Feature>
Atencsioamente,
Emerson
Todas as Respostas
-
Emerson,
Você precisa verificar qual é o seu modelo de lista, se for Lista Customizada você pode usar o seguinte XML para vincular o evento:
<?xml version="1.0" encoding="utf-8" ?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Receivers ListTemplateId="100"> <Receiver> <Name>Item Adicionado</Name> <Type>ItemAdded</Type> <Assembly>PactoParecer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=27022ff382474ca0</Assembly> <Class>ClassPacto.PactoParecer</Class> </Receiver> </Receivers> </Elements>
Agora, caso seu modelo de lista seja uma Biblioteca de Documentos, você precisa mudar o atributo ListTemplateId para o valor 101, ficando dessa forma:
<?xml version="1.0" encoding="utf-8" ?> <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Receivers ListTemplateId="101"> <Receiver> <Name>Item Adicionado</Name> <Type>ItemAdded</Type> <Assembly>PactoParecer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=27022ff382474ca0</Assembly> <Class>ClassPacto.PactoParecer</Class> </Receiver> </Receivers> </Elements>
...... =) ............
MCTS - Windows Sharepoint Services - Application Development -
Bom dia André,
Minha lista é customizada sim, e se você verificar no primeiro post, verá que meu arquivo Elements.xml, já está especificada, com a seguinte linha
<Receivers ListTemplateId="100" ListTemplateOwner="2DF26521-E1E1-4781-80D6-8E2FA320B69F">
Inclusive, coloco a GUID da lista para ser mais específico e o EventReceiver funcionar apenas naquela lista, mas não esta funcionando, não sei porque, se você tiver alguma idéia me indique.
Atenciosamente,
Emerson -
Emerson,
O atributo ListTemplateOwner identifica o proprietário do modelo de lista, esse cara é opcional e eu recomendo que você retire esse atributo da Feature, você pode dar uma olhada nesse link http://msdn.microsoft.com/pt-br/library/ms431081.aspx, ele explica direitinho o que significa esse atributo.
Como o modelo de lista Lista Customizada é padrão do SharePoint, a mesma é instalada pela seguinte feature C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\CustomList, caso você queira utilizar o atributo, eu recomendo que você use o seguinte GUID com a sua feature.<Receivers ListTemplateId="100" ListTemplateOwner="00BFEA71-DE22-43B2-A848-C05709900100">
Abraços,
Espero que consiga.
MCTS - Windows Sharepoint Services - Application Development -
Ola emerson,Uma coisa que te posso recomendar é utilizar este projecto para realizar o registo do Event Handler na Lista pretendida, alem de listar os Event Handler associados a Lista.Se o event Handler da Lista estiverem listados e instalados correctamente, entao recomendo fazer o Debug para captura do Erro que possas ter no Codigo para ver porque nao está a fazer o codigo.Podes realizar o Debug atraves to attach do processo w3w.exeHow to: Debug SharePoint ApplicationsTambem podes realizar o Registo do Event Handler atraves de activação da Feature conjuntamente com o code behind para registo.exemplo:public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb web = properties.Feature.Parent as SPWeb;
web.Lists["Nome da Lista"].EventReceivers.Add(
SPEventReceiverType.ItemAdded,
“Eventhandlers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[tokenKey]”,
“Eventhandlers.ItemEventHandler”);
}Espero que ajude.
André Lage Microsoft SharePoint, CRM and Sybase Consultant
Blog:http://aaclage.blogspot.com
Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/ -
Olá pessoal,
Bom dia, tudo bem?
Legal ver a comunidade de SharePoint interagindo tanto. :D
Emerson, acho que acima você já tem bastante informação para alcançar a solução do seu problema, para adicionar deixo também 2 artigos que escrevi sobre Event Receivers, um inclusive que mostra como passo-a-passo você pode habilitar um Event Receiver para uma lista específica. ;)
Ativando Event Receiver para uma Lista Específica no SharePoint 2007
http://www.linhadecodigo.com.br/Artigo.aspx?id=2665
Criando e Explorando os Event Receivers no MOSS 2007 \ WSS 3.0
http://www.linhadecodigo.com.br/Artigo.aspx?id=2574
Qualquer dúvida, manda ai.
Abraços!
Wagner Amorim
-
Sharepoint Specialist
MSF & SCRUM Practitioner
Microsoft MCP, MCTS e MCPD
-
http://waamorim.spaces.live.com
http://www.canalsharepoint.com.br
Wagner M. Amorim -
Boa tarde Wagner,
Foi seguindo a sua lista que fiz este EventReceiver. Mas vou verificar e fazer o Debug como o André falou para ver se descubro mais alguma coisa.
Qualquer coisa eu posto aqui. De qualquer forma obrigado a todos pela ajuda.
Emerson