zoukankan      html  css  js  c++  java
  • 获取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];
  • 相关阅读:
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
    UVA 11100 The Trip, 2007 (贪心)
    JXNU暑期选拔赛
    计蒜客---N的-2进制表示
    计蒜客---线段的总长
    计蒜客---最大质因数
    JustOj 2009: P1016 (dp)
  • 原文地址:https://www.cnblogs.com/leolis/p/2101281.html
Copyright © 2011-2022 走看看