Pregunta

Fondo:

Tengo una parte web de SharePoint 2010 de encargo integrada, heredando desde System.Web.UI.WebControls.WebParts.WebPart, que tiene una propiedad definida así:

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

Los poderes: eso, quisiera saber el valor de la propiedad para cada uno de sus 3,000 usuarios.Ya estoy familiarizado con la forma de usar el SplimitedWebPartManager Extraer la propiedad en vista compartida o mi propia vista personal , usando el código similar a:

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;

Entonces, la pregunta:

Estoy atascado en la recopilación de esta información para a todos los usuarios .Suponiendo que ya tengo, o sabe cómo recuperar, una lista de nombres de inicio de sesión o objetos de espusion, ¿cómo voy a recuperar la propiedad de la parte web para todos los usuarios?Puedo usar sugerencias en C #, vb.net o powershell.

¿Fue útil?

Solución

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;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top