I campi lookup sono sicuramente tra i campi più utilizzati in SharePoint sin dalle prime versioni. Utilizzando il modello ad oggetti (server-side o client-side), ci può capitare di voler scrivere una query CAML che si preoccupi di filtrare le informazioni presenti su una particolare lista in base al valore di un campo di tipo Lookup.
Normalmente il primo filtro che ci può venire in mente di fare (o almeno.. a me è successo così :) è quello sul valore testuale del campo. Ecco quindi che per filtrare gli elementi di una lista, in base al valore di uno dei suoi campi di tipo Lookup, possiamo scrivere la seguente query CAML:
<Query>
<Where>
<Eq>
<FieldRef Name="VOSTROCAMPOLOOKUP" />
<Value Type="Lookup">PEPPE</Value>
</Eq>
</Where>
</Query>
E fin qua tutto bene..
Se ci pensate bene però, può anche capitare di avere dei valori doppi nella lista di lookup, mentre invece voi volete filtrare in base ad un valore ben preciso della vostra lista di lookup. Proprio per ovviare a questo problema, dobbiamo sapere che possiamo effettuare un filtro basandoci sul valore dell'ID del nostro campo di tipo Lookup.
Ecco come:
<Query>
<Where>
<Eq>
<FieldRef Name="VOSTROCAMPOLOOKUP" LookupId="TRUE" />
<Value Type="Lookup">1</Value>
</Eq>
</Where>
</Query>
In questo caso ho filtrato gli elementi della mia ipotetica lista SharePoint in base al valore di lookup con ID = 1.
Vi assicuro che può essere veramente utile.
Se volete conoscere altri di questi "trucchi", ci vediamo alla mia sessione "SharePoint Development Basics & Best Practices" alla Microsoft SharePoint Conference 2011 il 19 Aprile 2011 alle 9.30 in sala B !