SharePoint 2010:すべてのユーザーのパーソナライズされたWeb Partプロパティを抽出する方法

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

質問

背景:

私は、のように定義されたプロパティを持つSystem.Web.UI.WebControls.WebParts.WebPartから継承した社内のカスタムSharePoint 2010 Webパーツを内蔵しています。

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

権力は、3,000人のユーザーのそれぞれのプロパティの価値を知りたいです。私はすでに splimitedWebPartManager 共有ビュー または のいずれかで抽出するには、次のようなコードを使用します。/ P>

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

だから、質問:

すべてのユーザーのためにこの情報を収集することに立ち往生しています。ログイン名やスパメッサオブジェクトのリストをすでに持っているか、または検索方法を知っていると仮定して、すべてのユーザーのWebパーツプロパティの取得についてどうすればよいですか。私はC#、vb.net、またはPowerShellで提案を使用することができます。

役に立ちましたか?

解決

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;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top