Usuário com melhor resposta
Problema com ItemAdded

Pergunta
-
Pessoal,
Estou utilizando o seguinte codigo
public override void ItemAdded(SPItemEventProperties properties) { CrmService CrmService = new CrmService(); CrmService = Funcoes.getCrmService(); new_documentosanexo Documento = new new_documentosanexo(); SPListItem Item = properties.ListItem; //Guardo o Título do Registro SharePoint no CRM Documento.new_name = Item["Título"].ToString(); //Guarda o ID do Registro SharePoint no CRM int Id = Item.ID; Documento.new_idsharepoint = Id.ToString(); CrmService.Create(Documento); Item["Id_Documento"] = GuidDocumento.ToString(); Item.SystemUpdate(); }
Quando crio um novo documento ele funciona normal, porém no segundo já da erro. O erro é o seguinte:
: Referência de objeto não definida para uma instância de um objeto.Muito estranho, pois a primeira vez funciona, no segundo registro dá o erro. Detalhe importante, se dar iisreset e criar novamente, o primeiro registro cria e o segundo não....
Luiz Henroqie
Respostas
-
Luiz,
Eu já tive problemas ao usar o properties.ListItem, por um motivo X qualquer ele vem nulo de vez em quando, o que deve acarretar o erro que você colocou no primeiro post.
Tem um link que pode te ajudar, acho que o problema é o mesmo.
http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/8712648e-cf09-4f7b-ab13-1c6aacdf588a/
No meu caso (eu detesto workarounds) mais precisei recuperar o último item inserido na lista da seguinte forma:
ListItem oListItem = SPWeb.Lists[properties.ListId].Items.GetItemById(properties.ListItemId);
Com este bloco de código eu consegui recuperar o Item de lista que disparou o evento. (Melhore este código, eu só coloquei assim encavalado pra demonstrar).
Espero que consiga cara...
Abraços... =) .....
MCTS - Windows Sharepoint Services - Application Development- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 27 de junho de 2012 20:52
Todas as Respostas
-
Deve haver algum objecto ou campo que esteja a retornar vazio, acontece muitas vezes quando estamos adicionar novos campos.Recomendo-te fazer o Debug do sharepoint para capturar o objecto errado.How to: Debug SharePoint Applicationsfaz a validação do Objecto,exemplo:
if (Documento!=null)
{
....
}
André Lage Microsoft SharePoint, CRM and Sybase Consultant
Blog:http://aaclage.blogspot.com
Codeplex:http://spupload.codeplex.com/http://simplecamlsearch.codeplex.com/ -
Andre,
Obrigado pela resposta.
Fiz as alterações porém não apareceu nenhum mensagem de erro, só consigo visualizar o erro no event view.
Fiz um teste e gostaria de sua ajuda para entender o problema.
Coloquei o seguinte código:
public override void ItemAdded(SPItemEventProperties properties) { CrmService CrmService = new CrmService(); CrmService = Funcoes.getCrmService(); new_documentosanexo Documento = new new_documentosanexo(); Documento.new_name = "Teste"; CrmService.Create(Documento); }
Com este código funciona normalmente, posso criar 20 novos documentos que ele cria os registros no crm, porém se acrescentar o seguinte código só funciona no primeiro registro.
SPListItem Item = properties.ListItem;
//Guardo o Título do Registro SharePoint no CRM
if (Item["Título"].ToString() != null)
{
Documento.new_name = Item["Título"].ToString();
}
else
{
Documento.new_name = "Item Vazio";
}
o que pode ser ?
Luiz Henroqie -
-
Mais uma observação.
Dentro do servidor sharepoint está funcionando, porém a integração só funciona quando e carregado um documento do word, qualquer outro documento a integração funciona.
Resumindo:
- Fora do servidor sharepoint só funciona na primeira vez que cria ou carrega o documento. Para voltar funcionar é preciso dar um iisreset daí volta a funcionar somente o primeiro !!!..... No segundo aparece o erro: Referência de objeto não definida para uma instância de um objeto.
- Dentro do servidor funciona normal, quantas vezes for necessário, porém somente quando o arquivo é word, qualquer outro a integração não funciona.
Luiz Henroqie -
Luiz,
Eu já tive problemas ao usar o properties.ListItem, por um motivo X qualquer ele vem nulo de vez em quando, o que deve acarretar o erro que você colocou no primeiro post.
Tem um link que pode te ajudar, acho que o problema é o mesmo.
http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/8712648e-cf09-4f7b-ab13-1c6aacdf588a/
No meu caso (eu detesto workarounds) mais precisei recuperar o último item inserido na lista da seguinte forma:
ListItem oListItem = SPWeb.Lists[properties.ListId].Items.GetItemById(properties.ListItemId);
Com este bloco de código eu consegui recuperar o Item de lista que disparou o evento. (Melhore este código, eu só coloquei assim encavalado pra demonstrar).
Espero que consiga cara...
Abraços... =) .....
MCTS - Windows Sharepoint Services - Application Development- Marcado como Resposta Hezequias VasconcelosModerator quarta-feira, 27 de junho de 2012 20:52