2010-05-03 16 views
10

Ho alcuni dati specifici dell'utente che ho bisogno di archiviare in SharePoint e rendere accessibili all'utente tramite webparts personalizzate. Diciamo un elenco di URL preferiti. Quale sarebbe il modo più semplice per archiviare queste informazioni?Come memorizzare dati specifici dell'utente in SharePoint

  • Alcuni propertybag incorporati per SPUser o simili di cui non sono a conoscenza.
  • SPList, associato tramite la colonna Utente.
  • Tabella del database personalizzata, associata tramite ID SPUser.
  • Altrimenti?

Mi sembra un RTFM, ma probabilmente sto chiedendo a google le domande sbagliate.

[Update]

Alla fine abbiamo memorizzate queste informazioni in un elenco semplice, in una posizione fissa, con un campo di persona per filtrare. Forse la soluzione più semplice in effetti, ma tecnicamente penso che la risposta indicata qui sotto sia più bella.

risposta

5

Se si desidera renderli riutilizzabili attraverso la raccolta siti per ciascun utente, è possibile aggiungere Campi all'elenco delle informazioni utente. È possibile aggiungere un ricevitore di funzionalità alla soluzione per le parti Web che può creare questa colonna o controllare se questa colonna esiste nell'elenco delle informazioni sull'utente per assicurarsi che la colonna esista.

L'elenco Informazioni utente è un elenco standard di SharePoint che SharePoint utilizza per memorizzare le informazioni dell'utente. Per accedere alla User Information List è possibile accedere al Web principale della raccolta siti e utilizzare la proprietà SiteUserInfoList

E.G.

SPList userInformationlist = SPContext.Current.Site.RootWeb.SiteUserInfoList; 
//Or 
SPWeb web = SPContext.Current.Site.RootWeb; 
SPList userInformationlist = web.SiteUserInfoList; 

per accedere all'elenco degli utenti del lotto è possibile utilizzare gli Utenti Id per ottenere il ListItem indietro dal Informazioni utente Lista

AD ESEMPIO

SPListItem currentUserItem = userInformationlist.GetItemById(web.CurrentUser.ID); 

Se si utilizza MOSS è possibile memorizzare queste informazioni nei profili utente e renderla disponibile attraverso il sito Collezioni questo non ha bisogno i siti da abilitare. Dovresti utilizzare le classi del profilo utente per accedervi.

+0

Abbastanza buoni suggerimenti! Non ero a conoscenza di SiteUserInfoList e probabilmente riuscirò a farla franca con una singola raccolta siti (il progetto di layout di SharePoint più ampio è ancora in sospeso). Perché la quantità di dati che ho bisogno di memorizzare è piccola ed è atomica, potrei perseverarla in un singolo campo Note. –

+0

Anche il pacchetto proprietà del profilo utente dovrebbe funzionare correttamente. Sembra un po 'pesante per creare un profilo solo per la memorizzazione di alcuni dati, ma potrebbe funzionare molto bene. –

+0

L'Elenco informazioni utente è l'elenco WSS principale, MOSS dispone quindi di un database dei profili utente seprate fornito dall'SSP che sincronizza alcuni dei dati nell'Elenco delle informazioni utente locale, Sarebbe più pesante usare il Database dei profili utente ma dipende da dove si desidera accedere a questi dati mentre l'Elenco informazioni utente è memorizzato nella raccolta sito. –

1

Questa è una buona domanda.

Anche se non ho risposta perfetta, qui ci sono alcune cose che si possono prendere in considerazione:

  • Memorizzare i dati in un cookie del browser, se questo è fattibile.

  • Archiviare il rootweb della raccolta siti nelle Proprietà, immesso dall'ID di accesso dell'utente. Si consiglia di elevare durante la lettura/scrittura delle proprietà nel caso in cui l'utente abbia accesso a un Web secondario, ma non a rootweb.

+1

Non consiglierei la raccolta Proprietà Rootwebs; Avrai problemi di prestazioni sul tuo sito in quanto non è progettato per un numero elevato di record. –

+0

Pensare in modo creativo, ma i cookie non sono così persistenti come vorrei che fossero le cose. –

2

Vorrei andare per le proprietà sui profili utente. Non si desidera memorizzare le informazioni sul Web principale in quanto non si tratta di informazioni relative al Web principale. L'esempio con gli URL preferiti, ogni utente ha una raccolta "link rapidi" sul proprio profilo. Un luogo ideale per archiviare gli URL per ciascun utente. :)

2

Costruisci una web part che legge/scrive un database personalizzato e avrai la flessibilità di utilizzare la webpart in SiteCollections, WebApps o anche farm separati.

Questo è stato implementato dove lavoro ed è stato un grande successo. Avevamo bisogno di un modo per fornire ai nostri utenti una vasta selezione di link importanti e di uso comune. Gli utenti finali hanno la possibilità di visualizzare i collegamenti che sono utili per la loro particolare funzione di lavoro e di avere una web part che può essere messa ovunque per fare riferimento a quei collegamenti che sono importanti per loro. Hai anche la possibilità per un "admin" di accedere al database personalizzato e aggiornare gli eventuali URL che potrebbero cambiare senza che l'utente finale subisse alcun impatto o finendo con un link non funzionante.