شيربوينت 2010:كيفية استخراج خاصية جزء الويب المخصصة لجميع المستخدمين

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

سؤال

خلفية:

لديّ جزء ويب SharePoint 2010 مخصص مضمن في الشركة، وهو يرث من System.Web.UI.WebControls.WebParts.WebPart, ، والتي تحتوي على خاصية محددة على النحو التالي:

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

ترغب السلطات في معرفة قيمة العقار لكل من مستخدميه البالغ عددهم 3000 مستخدم.أنا بالفعل على دراية بكيفية استخدام SPLimitedWebPartManager لاستخراج الملكية في أي منهما عرض مشترك أو وجهة نظري الشخصية, ، باستخدام رمز مشابه لـ:

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;

إذن السؤال:

أنا عالق في جمع هذه المعلومات ل جميع المستخدمين.بافتراض أن لدي بالفعل، أو أعرف كيفية استرداد، قائمة بأسماء تسجيل الدخول أو كائنات SPUser، كيف يمكنني استرداد خاصية جزء الويب لجميع المستخدمين؟يمكنني استخدام الاقتراحات في C#، أو VB.NET، أو PowerShell.

هل كانت مفيدة؟

المحلول

جرب هذا الكود - لم أختبره ولكن أعتقد أنه يجب أن يعمل.

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;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top