Desenvolvimento - Sharepoint - Dev

Utilizando Campos de Consulta (Lookup) Programaticamente

Neste tutorial, demonstramos como ler e atualizar valores de um campo de consulta (Lookup) seguindo as boas práticas, ou seja, utilizando o Object Model do Sharepoint.

por Rodrigo Romano



Overview
Hoje vou falar um pouco de como utilizar programaticamente aqueles campos de consulta (Lookup).

Vale a pena lembrar, que como desenvolvedores do mundo Orientado a Objeto, e seguidores das boas práticas devemos evitar realizar uma certa atividade utilizando "Hard Codes" e, ao contrário disso, utilizar as classes disponíveis no ObjectModel do sharepoint ao máximo para realizar as nossas tarefas.

Mas vocês devem estar se perguntando, porque eu estou falando disso?

E a resposta é bem simples, em muitos blogs por aí, vemos as pessoas ensinar como realizar este mesmo procedimento utilizando "Hard Codes" e isso pode trazer vários problemas no futuro.

Quem já teve a curiosidade de olhar o valor de um campo de consulta pode notar que ele segue a seguinte forma:
ID;Valor. Correto? Como bons programadores que somos, o primeiro instinto seria dividir esta string em 2 separados pelo ";".

Mas isso não funcionaria?

Funcionar, funciona. Entretanto, imagine que os desenvolvedores do sharepoint resolvam atualizar esta funcionalidade e depois de uma certa data o valor de um campo de consulta passe a ser retornado diferente do padão atual? Todas as aplicação irão parar de funcionar?

Por isso, devemos utilizar as Classes existentes para realizar este procedimento simples, mas não menos importante!

Solução

Bo
m, chega de papo! Vamos colocar a mão na massa:

Ler Valores

using (SPWeb web = SPControl.GetContextWeb(Context).Site.OpenWeb()) // identifica o site atual
{
SPList list = web.Lists["Nome da Lista"]; // Lista que contenha algum campo de consulta
foreach (SPListItem item in list.Items) // iterar entre os items da lista
{
// A linha abaixo é a que faz todo o trabalho =D
SPFieldLookupValue lookupField = new SPFieldLookupValue(item["NomeCampo"].ToString());
string lookUpValue = lookupField.LookupValue;
}
}


E para atualizar um valor de um campo de consulta, como faço?

Atualizar Valores


using (SPWeb web = SPControl.GetContextWeb(Context).Site.OpenWeb()) // identifica o site atual
{
SPList list = web.Lists["Nome da Lista"]; // Lista que contenha algum campo de consulta
foreach (SPListItem item in list.Items) // iterar entre os items da lista
{
// Aqui vai um conceito importante, para setar um valor a um campo Lookup você deve passar dois parâmetros:
// o ID do item, representado como 1 e o Valor realmente do item, representado como "Valor"
item["Campo"] = new SPFieldLookupValue(1, "Valor");
item.Update();
}
}

Conclusão
Neste tutorial, demonstramos como ler e atualizar valores de um campo de consulta (Lookup) seguindo as boas práticas, ou seja, utilizando o Object Model do Sharepoint.

Espero que tenham gostado!
Rodrigo Romano

Rodrigo Romano - Arquiteto de Soluções formado em Ciências da Computação, cursando MBA em Gestão de Projetos, atua como Senior em Desenvolvimento e Engenharia de Software desde 2003 utilizando tecnologias como Delphi e Java.
Atualmente, atuando com tecnologias Microsoft (Sharepoint e .NET) e com conhecimentos avançados em metodologias como UML, EP e Design Patterns de Desenvolvimento proporcionando uma aceleração do negócio e obedecendo as boas práticas disponíveis no mercado.
Membro ativo da comunidade MSDN e Colunista da maior Comunidade de SharePoint no Brasil (Canal SharePoint).
Blog:
http://rodrigo-romano.spaces.live.com