c# sharepoint-2010 web-parts personalization

c# - SharePoint 2010: cómo extraer propiedades de elementos web personalizadas para todos los usuarios



sharepoint-2010 web-parts (1)

Fondo:

Tengo un elemento web personalizado de SharePoint 2010 incorporado, que hereda de 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; }

A Powers-That-Be le gustaría saber el valor de la propiedad para cada uno de sus 3.000 usuarios. Ya estoy familiarizado con el uso de SPLimitedWebPartManager para extraer la propiedad en vista compartida o en mi propia vista personal , usando un 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 estancado en la recopilación de esta información para todos los usuarios . Suponiendo que ya tengo, o sé cómo recuperar, una lista de nombres de inicio de sesión o objetos SPUser, ¿cómo hago para recuperar la propiedad de la parte web para todos los usuarios? Puedo usar sugerencias en C #, VB.NET o PowerShell.


Pruebe este código: no lo he probado, pero creo que debería funcionar.

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; } }