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 RomanoVale 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!
Bom, 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();
}
}
Espero que tenham gostado!
- Usando Client Object Model do SharePoint 2010 para melhorar a Experiência do Usuário (UX)Sharepoint - Dev
- LINQ to SharePoint no SharePoint 2010Sharepoint - Dev
- SharePoint 2010: Visual WebPartsSharepoint - Dev
- Integrando Microsoft ASP .NET AJAX com SharePointSharepoint - Dev
- Tratamento de Exceções no SharePointSharepoint - Dev