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];
  • 相关阅读:
    failonerror on MSBuild
    近期Windows Mobile问题汇总
    android的文件操作 sdcard和rom
    用实际库存数调整批次保留最新的批次
    各种布局layout
    javascript让ui线程让出时间片的模型
    android ListView控件操作绑定数据、单击事件
    Pocket PC 模拟器上网设置
    android单元测试
    打电话发短信
  • 原文地址:https://www.cnblogs.com/leolis/p/2101281.html
Copyright © 2011-2022 走看看