Posts
163
Comments
179
Trackbacks
5
marzo 2009 Blog Posts
WSS 3: feature per selezionare la master page


Incuriosito dal post di Omar, mi sono subito cimentato con il test della soluzione proposta.
Ottima devo dire, sebbene abbia un’unica pecca: non viene evidenziato il tab relativo al sito corrente (lo so non è proprio banale essendoci livelli multipli, però…). Comunque si può ovviare al problema modificando il codice o implementando una soluzione costum “ispirata” a quella proposta.

Comunque nel link segnalato da Omar, viene spiegato tutto passo per passo. Il punto finale dell’installazione è quello della modifica della master page. Dato che non mi  piace molto modificare la master page di default, me ne sono creato una copia, l’ho “uploadata” su WSS 3.0 certo di poterla selezionare…. Ma evidentemente mi sbagliavo con MOSS 2007!

Cercando sul solito Google mi sono imbattuto in questa feature che aggiunge la possibilità di selezionare una master page e di applicarla a tutti i siti della collection. Non c’e’ che dire, veramente utile!

posted @ giovedì 12 marzo 2009 23:03 | Feedback (0)
SharePoint Tips: update delle proprietà di un SPItem via Object Model


Man mano che si lavora con SharePoint si scroprono tanti dettagli, tanti workaround, tanti “tarocchi”.
Nel post di oggi, voglio segnalare un comportamento “strano” che si verifica utilizzando l’Object Model di SharePoint. In particolare, volendo andare a modificare le proprietà di un elemento di una lista, si potrebbe utilizzare un frammento di codice tipo questo:

   1: using (SPSite site = new SPSite(SITE_URL))
   2: {
   3:   using (SPWeb web = site.OpenWeb())
   4:   {
   5:     SPList list = web.Lists[LIST_NAME];
   6:     if (list != null)
   7:     {
   8:       SPListItemCollection items = list.Items;
   9:       items[0]["Field1"] = "Val1";
  10:       items[0]["Field2"] = "Val2";
  11:       items[0]["Field3"] = "Val3";
  12:       // Aggiornamento dei valori
  13:       items[0].Update();
  14:     }
  15:   }
  16: }

Cosa c’e’ di sbagliato? Apparentemente niente, Visual Studio compila correttamente, ma quando si va a testare le modifiche non vengono salvate sull’elemento selezionato.
La particolarità dell’esempio è che si sta utilizzando una SPListItemCollection accedendo direttamente agli item della collection. Certo l’esempio è stupido, ma consideriamo ad esempio casi in cui la collection di Items è frutto di una SPQuery e che occorre iterare tra tutti gli elementi trovati andando a modificare una o più proprietà. Penso sia un caso abbastanza comune, o almeno a me è capitato più volte.

Debuggando il codice precedente, si nota che ogni volta che si accede all’elemento della collection, viene restituito l’oggetto originario, senza le modifiche fatte in precedenza. Per risolvere il problema, occorre modificare il codice nel modo seguente:

   1: using (SPSite site = new SPSite(SITE_URL))
   2: {
   3:   using (SPWeb web = site.OpenWeb())
   4:   {
   5:     SPList list = web.Lists[LIST_NAME];
   6:     if (list != null)
   7:     {
   8:       SPListItemCollection items = list.Items;
   9:       SPListItem li = items[0];
  10:       li["Field1"] = "Val1";
  11:       li["Field2"] = "Val2";
  12:       li["Field3"] = "Val3";
  13:       // Aggiornamento dei valori
  14:       li.Update();
  15:     }
  16:   }
  17: }

Sostanzialmente l’elemento della collection, va assegnato ad un oggetto SPListItem che sarà poi utilizzato per le modifiche e per la chiamata all’Update.

posted @ martedì 10 marzo 2009 13:42 | Feedback (2)
Una SPQuery che non funziona e restituisce tutti gli elementi


Oggi mi sono imbattuto in uno strano problema: stavo sviluppando una funzione che restituisse una serie di elementi da una lista di SharePoint filtrati opportunamente.
Per fare questo ho deciso di utilizzare una bella SPQuery e quindi mi sono messo a testare la mia query CAML con il tool per eccellenza, l’ U2U CAML Query Builder.

In men che non si dica funzione e query erano pronte ad essere testate. A questo punto sono iniziati i problemi: lanciando la query sull’U2U CAML Query Builder tutto funzionava correttamente. Lanciando la query dal mio applicativo, la query non filtrava i risultati. Sostanzialmente mi restituiva tutti gli elementi della lista.
Ammetto che è da un po’ che non realizzavo una query CAML, ma provando e riprovando, il risultato era sempre lo stesso. Una veloce Googlata mi ha portato alla soluzione del problema: quando si copia la query dall’U2U CAML Query Builder bisogna omettere il tab <query> iniziale. Eliminato quello tutto è tornato a funzionare come prima.

E dire che se la memoria non mi inganna, mi era già successo in passato…. Ma l’età avanza, si vede che sto perdendo colpi!

posted @ giovedì 5 marzo 2009 21:32 | Feedback (0)
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS