SharePoint 2010: come estrarre proprietà web part personalizzata per tutti gli utenti
-
09-12-2019 - |
Domanda
Sfondo:
Ho una web part web di SharePoint 2010 incorporata, ereditando da System.Web.UI.WebControls.WebParts.WebPart
, che ha una proprietà definita come:
[Personalizable(PersonalizationScope.User)]
[WebBrowsable(true)]
[WebDisplayName("...")]
[WebDescription("...")]
[Category("...")]
public string CustomProp { get; set; }
.
I poteri: si amano conoscere il valore della proprietà per ciascuno dei suoi 3.000 utenti.Ho già familiarità con come usare il SplifitedWebPartManager per estrarre la proprietà in Visualizzazione condivisa o
.
var pageUrl = "/Pages/SomePage.aspx";
var limitedManager = SPContext.Current.Web.GetLimitedWebPartManager(
pageUrl,
PersonalizationScope.User); // or .Shared, if loading the shared value
var webPart = limitedManager.WebParts.OfType<MyWebPart>().FirstOrDefault();
var prop = webPart.CustomProp;
Quindi, la domanda:
Sono bloccato sulla raccolta di queste informazioni per Tutti gli utenti .Supponendo che lo abbia già, o sai come recuperare, un elenco di nomi di accesso o oggetti spuser, come vai a recuperare la proprietà Web Part per tutti gli utenti?Posso usare suggerimenti in c #, vb.net o powershell.
Soluzione
Try this code - I haven't tested it but I think it should work.
const string absolutePageUrl = "http://spsite:5000/Pages/SomePage.aspx";
foreach (SPUser user in SPContext.Current.Site.RootWeb.AllUsers.Cast<SPUser>())
{
if (!user.LoginName.StartsWith("DOMAIN NAME"))
continue;
using (SPSite site = new SPSite(absolutePageUrl, user.UserToken))
using (SPWeb web = site.OpenWeb())
{
var mgr = web.GetLimitedWebPartManager(absolutePageUrl, PersonalizationScope.User);
var webPart = mgr.WebParts.OfType<MyWebPart>().FirstOrDefault();
var prop = webPart.CustomProp;
}
}