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