获取PeopleEditor控件中的用户或用户组

今天开发了一个WebPart用于查询权限,里面用到了一个PeopleEditor控件用于选择用户或用户组,代码如下:
<SharePoint:PeopleEditor MultiSelect="false" SelectionSet="User,SPGroup" ID="PeopleSelected" Width="300" runat="server"/>
里面限制了用户不能多选,且选择的对象只能是User或SharePoint的用户组,我现在需要提取这个控件里面选择的用户或用户组的信息,于是写了如下一个方法来实现:
View Code
1 public SPPrincipal GetSPPrincipalFromPeopleEditor(string webName, PeopleEditor pe)
2 {
3 SPPrincipal user =null;
4 SPSite mySite = SPContext.Current.Site;
5 SPWeb myWeb = mySite.OpenWeb(webName);
6 SPUserCollection allusers = myWeb.SiteUsers;
7 SPGroupCollection allgroups = myWeb.SiteGroups;
8
9 string principalType = ((PickerEntity)pe.ResolvedEntities[0]).EntityData["PrincipalType"].ToString();
10 string name = ((PickerEntity)pe.ResolvedEntities[0]).Key;
11 if (principalType =="User"|| principalType =="SecurityGroup")
12 {
13 foreach (SPUser u in allusers)
14 {
15 if (u.LoginName == name)
16 {
17 user = u;
18 }
19 }
20 }
21 elseif (principalType =="SharePointGroup")
22 {
23 foreach (SPGroup g in allgroups)
24 {
25 if (g.Name == name)
26 {
27 user = g;
28 }
29 }
30 }
31 return user;
32 }
其实如果PeopleEditor控件设置只能单选用户,就可以用如下简单的代码提取出来:
1 string loginName = ((PickerEntity)PeopleEditor.ResolvedEntities[0]).EntityData["AccountName"].ToString();
2 SPUser u = SPContext.Current.Site.RootWeb.SiteUsers[loginName];
原文地址:https://www.cnblogs.com/leolis/p/2101281.html