Francesco Geri

Il blog di Francesco Geri
posts - 94, comments - 165, trackbacks - 2

SharePoint 2010 - Modifica del Title di un SPField in presenza di language pack

In SharePoint 2010 è possibile visualizzare una lista o una document library in lingue diverse.
Per ciascuna delle lingue supportate dalla lista si può impostare il nome visualizzato (Title) delle colonne nella lingua corrente.

Per questo motivo se si vuole modificare il Title di un SPField da codice non sono più sufficienti (come in SharePoint 2007) le istruzioni:

myField.Title "My first field"
myField.Update()

Ma è ora necessario gestire le risorse associate al Title.

Confrontando la documentazione sulla proprietà Title di SharePoint 2007 e SharePoint 2010, e quindi arrivando alla pagina di descrizione del metodo SPUserResource.SetValueForUICulture ero arrivato alla conclusione che il nuovo codice fosse il seguente:

newField.TitleResource.SetValueForUICulture(newField.ParentList.ParentWeb.UICulture, "My first field")
newField.Update()

In pratica sto impostando il valore della risorsa per il titolo del campo, relativamente alla cultura di default del sito web (SPWeb.UICulture). In realtà la cosa non funziona correttamente, infatti andando poi sul sito da browser potremmo non trovare la modifica. Dico potremmo, perché in realtà il tutto dipende dalla culture corrente del thread che esegue quel codice: se la culture coincide con quella di default dell’oggetto SPWeb allora funziona, altrimenti no.

In realtà, in definitiva mi sono accorto che dipende fondamentalmente dalla Culture del thread: se questa è la stessa dell’oggetto SPWeb (o direi quella di cui vogliamo impostare il Title) allora posso usare anche lo stesso codice di SharePoinht 2007.

Conclusione, a mio modo di vedere il codice è il seguente:

Dim currentCulture As Globalization.CultureInfo = Threading.Thread.CurrentThread.CurrentUICulture
Threading.Thread.CurrentThread.CurrentUICulture = newField.ParentList.ParentWeb.UICulture
newField.Title = "My first field"
newField.Update()
Threading.Thread.CurrentThread.CurrentUICulture = currentCulture

Print | posted on venerdì 20 maggio 2011 12:49 |

Powered by:
Powered By Subtext Powered By ASP.NET