셰어포인트 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; }

Powers-That-Be는 3,000명의 사용자 각각에 대한 자산 가치를 알고 싶어합니다.나는 이미 사용법을 잘 알고 있다. 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