Dovendo recuperare un item di una lista dopo averne fatto un content deploy un mio collega e io ci siamo domandati se ci fosse una proprietà degli item che rimaneva immutata tra sorgente e destinazione: l’abbiamo trovata usando SharePoint Manager. La proprietà in questione è UniqueId; MSDN recita “Gets the GUID that uniquely identifies the item for the internal database” e nulla più. UniqueId è una proprietà di SPListItem. Nel nostro caso i prima battuta usavamo SPContext.Current.Item["GUID"] pensando di aver identificato un valore univoco, invece ci siamo accorti che questo valore con il content deploy variava. Invece utilizzando SPContext.Current.ListItem.UniqueId abbiamo risolto il problema.
Altra cosa interessante è la possibilità di usare questo valore per recuparare un publishing page da una lista Pages tramite Content Query Web Part, infatti con una semplice query CAML del tipo:
<span lang="EN-US"><Where></span><span lang="EN-US">
<Eq>
<FieldRef Name='UniqueId' />
<Value Type='Text'></span><span lang="EN-US">{9C5324A9-BD5D-411C-9F78-7F494BF87985}</span><span lang="EN-US"></Value>
</span> </Eq>
</Where>
è possibile raggiungere il risultato. Sempre usando una Content Query Web Part, estesa da noi in modo da fare override delle proprietà come OvverideQuery, ho scoperto, che istruendo la web part ad estrarre anche la proprietà UniqueId e usando il sitema di debug di Heather Salomon, la proprietà si presenta come segue:
<span lang="EN-US">V:<strong>1;#{9C5324A9-BD5D-411C-9F78-</strong><strong>7F494BF87985}</strong></span>
con lo stesso formalismo di un campo di lookup, dove il numero che precede ;# corrisponde all’ID dell’item nella lista, mentre il codice tra parentesi graffe è l’UniqueId.
Infine segnalo un sistema per esporre lo UniqueId di una pagina di un publishing site in un page layout (comodo anche per altre proprietà del ListItem)
<span lang="EN-US"><SharePointWebControls:ListItemProperty<br />runat="server" id="ListItemProperty1" Property="UniqueId"<br />InDesign="True" /></span>
Alla prossima!
Getting an SPListItem by it’s Unique ID
Nessun commento:
Posta un commento