셰어포인트 2010:모든 사용자에 대해 개인화된 웹 파트 속성을 추출하는 방법
-
09-12-2019 - |
문제
배경:
다음을 상속하는 내장된 사용자 지정 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;
}
}
제휴하지 않습니다 StackOverflow