SharePoint 2010:Comment extraire web personnalisée partie de la propriété pour tous les utilisateurs

StackOverflow https://stackoverflow.com//questions/9625797

Question

Arrière-plan:

J'ai intégré en interne personnalisé web SharePoint 2010 partie, héritant de System.Web.UI.WebControls.WebParts.WebPart, qui a une propriété définie comme suit:

[Personalizable(PersonalizationScope.User)]
[WebBrowsable(true)]
[WebDisplayName("...")]
[WebDescription("...")]
[Category("...")]
public string CustomProp { get; set; }

Les Pouvoirs-Que-Être voudrais savoir la valeur de la propriété pour chacun de ses 3 000 utilisateurs.Je suis déjà familier avec la façon d'utiliser le SPLimitedWebPartManager pour extraire la propriété dans avis partagé ou mon avis personnel, à l'aide de code similaire à:

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;

Donc, la question:

Je suis bloqué sur la collecte de cette information pour tous les utilisateurs.En supposant que j'ai déjà, ou de savoir comment récupérer une liste de noms d'utilisateur ou SPUser objets, comment dois-je faire à propos de la récupération de la partie web de la propriété pour tous les utilisateurs?Je peux utiliser des suggestions en C#, VB.NET ou PowerShell.

Était-ce utile?

La solution

Essayez ce code, je ne l'ai pas testé mais je pense que cela devrait fonctionner.

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;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top