如何在SharePoint中调用EnsureUser后从People Picker控件获取电子邮件地址?

时间:2011-11-17 07:26:21

标签: validation sharepoint-2010 controls peoplepicker

我在页面上有一个人员选取器和标签,一旦我确保用户在Active Directory中可用,我需要将用户的电子邮件地址绑定到标签控件。哪个代码需要写?它应该在PageLoad()事件处理程序中吗?

2 个答案:

答案 0 :(得分:2)

是的,您可以像这样访问SPUser对象(包含email property):

var accountName = peoplePicker.Accounts[0];

//this will create a new account on SharePoint if a user with the given accountName does not exist
var user = web.EnsureUser(accountName); 

lblEmail = user.Email;

peoplePicker显然是人物选择器控件,web是您所在的当前Web的实例(您可以使用SPContext.Current.Web的网页)。

当您在人员选择器中输入用户名并按Enter键时,没有特定事件触发,但是您可以将AutoPostback属性设置为true,然后触发可以通过Page_Load处理的通用回发......

在您的标记中定义PeoplePicker,如下所示:

<SharePoint:PeopleEditor AutoPostBack="true" ID="peUser" runat="server" />

在Page_Load中,您只需检查人员选择器是否拥有一个(或更多,取决于)帐户,并使用“帐户”属性,然后执行您的任务......

希望这会有所帮助

答案 1 :(得分:0)

如果你想要的只是电子邮件地址,这应该有效:

if (pectrl.ResolvedEntities.Count > 0)
{
    PickerEntity pe = (PickerEntity)pectrl.ResolvedEntities[0];
    string email = pe.EntityData[PeopleEditorEntityDataKeys.Email].ToString();
}