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];
  • 相关阅读:
    随手记几个容易被忽略的bug
    fiddler常见应用场景
    浅谈软件测试流程
    http抓包实战之http协议初始、fiddler初识
    http之header详解
    http协议基础(一)
    Fiddler抓包工具总结二(转自小坦克)
    接口测试总结
    [Python][爬虫]利用OCR技术识别图形验证码
    [总结]JS在Selenium中的使用
  • 原文地址:https://www.cnblogs.com/leolis/p/2101281.html
Copyright © 2011-2022 走看看