SharePoint 2010: So extrahieren Sie personalisierte Web-Part-Eigenschaft für alle Benutzer
-
09-12-2019 - |
Frage
Hintergrund:
Ich habe ein integriertes Web-Teil von Custom SharePoint 2010, der von System.Web.UI.WebControls.WebParts.WebPart
erbgt, der eine von Ihnen definierte Eigenschaft aufweist:
generasacodicetagpre.
Die Befugnisse - das möchte den Wert der Eigenschaft für jeden seiner 3.000 Benutzer kennen.Ich bin bereits vertraut, wie ich den SplimitedWebPartManager So extrahieren Sie die Eigenschaft in Shared View oder meine eigene persönliche Ansicht , verwenden Sie den Code ähnlich wie: generasacodicetagpre.
also die frage:
Ich stecke auf dem Sammeln dieser Informationen für alle Benutzer .Angenommen, ich habe bereits oder wissen Sie, wie Sie Abrufen, eine Liste der Anmeldenamen oder Spieger-Objekte abrufen, wie setze ich das Web-Part-Eigenschaft für alle Benutzer ab?Ich kann Vorschläge in C #, Vb.net oder PowerShell verwenden.
Lösung
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;
}
}