Home > SharePoint - Tips & Tricks > Trabalhando com Campos Lookup e Lookup Multi Value no SharePoint programaticamente

Trabalhando com Campos Lookup e Lookup Multi Value no SharePoint programaticamente


Olá! Smile

Overview:

Um dos tipos de campos mais utilizados no SharePoint quando precisamos referenciar dados de outra lista, é o tipo Lookup (Consulta).

Cenário:

Normalmente usamos um campo do tipo Lookup quando queremos relacionar dados de uma lista em outra lista. O campo lookup pode ser com valores únicos, exibindo um DropDown com as opções, ou com valores múltiplos, renderizando no form algo similar a dois ListBox com controles para inserir e remover os valores. Veja as imagens abaixo, como eles renderizam.

Mas e como manipular esses controles programaticamente, ou seja, via código? 

SOLUÇÃO:

Usando o Object Model do SharePoint, podemos facilmente manipular os valores de Lookup field tanto com valores únicos ou múltiplos!

Meu amigo Rodrigo Romano já publicou um post sobre Lookup field com valor único:

http://www.canalsharepoint.com.br/tutoriais/Tutoriais/Utilizando%20Campos%20de%20Consulta%20(Lookup)%20Programaticamente.aspx

Eis aqui, como podemos manilupar Lookup Field com múltiplos valores.

Inserindo valores:

Code Snippet
  1. using (SPSite site = new SPSite(""))
  2.             {
  3.                 using (SPWeb web = site.OpenWeb())
  4.                 {
  5.                     SPList lista = web.Lists["SuaLista"];
  6.                     SPListItem item = lista.AddItem();
  7.  
  8.                     SPFieldLookupValueCollection lookupValues = new SPFieldLookupValueCollection();
  9.  
  10.                     lookupValues.Add(new SPFieldLookupValue(1, "Valor1"));
  11.                     lookupValues.Add(new SPFieldLookupValue(2, "Valor2"));
  12.  
  13.                     item["SeuCampoLookupFieldMutiValue"] = lookupValues;
  14.  
  15.                     item.Update();                   
  16.                 }
  17.             }

Pegando os valores:

Code Snippet
  1. using (SPSite site = new SPSite(""))
  2.             {
  3.                 using (SPWeb web = site.OpenWeb())
  4.                 {
  5.                     SPList lista = web.Lists["SuaLista"];
  6.                     SPListItem item = lista.GetItemById(1); //Um item da sua lista
  7.  
  8.                     SPFieldLookupValueCollection lookupValues = (SPFieldLookupValueCollection)item["SeuCampoLookupFieldMutiValue"];
  9.  
  10.                     List<int> lookupValueId = new List<int>(); //vamos adicionar o valores em um List com o id dos valores da outra lista que o Lookup está relacionado
  11.  
  12.                     foreach (SPFieldLookupValue value in lookupValues)
  13.                     {
  14.                         lookupValueId.Add(value.LookupId);
  15.                     }
  16.                 }
  17.             }

Abraço!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s

%d bloggers like this: