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];
  • 相关阅读:
    [LeetCode] Find Minimum in Rotated Sorted Array
    [LeetCode] Sort Colors
    [LeetCode] Invert Binary Tree
    最小的k个数
    连续子数组最大和
    [LeetCode] Majority Element
    [LeetCode] Reverse Linked List
    [LeetCode] Lowest Common Ancestor of a Binary Search Tree
    [LeetCode] Kth Smallest Element in a BST
    三种方式控制GPIO
  • 原文地址:https://www.cnblogs.com/leolis/p/2101281.html
Copyright © 2011-2022 走看看