我创建了一个 Teams Web 部件(托管在 Teams 中)。我正在使用 sp/pnp 人员选择器来允许用户选择人员。我想将其提交到一个单独的 SharePoint 网站(而不是团队背后的网站)。
框架:SPFx
问题:当我提交 ID(SharePoint 中的“人员”列所需的 ID)时,它不显示任何内容,因为基于 Teams 的人员选取器中的 ID 与 SharePoint 网站中使用的 ID 不同。
我尝试提交登录名,但人员列需要 ID。 尝试:
const [requestedOnBehalfId, setRequestedOnBehalfId] = useState<any>();
const [requestedOnBehalfEmail, setRequestedOnBehalfEmail] = useState<any>([]);
const _createRequest = () => {
const request = {
Title: title,
Department: selectedDept,
RequestedById: requestedOnBehalfId,
}
CreateLineItem(request, props.context);
};
const _changeRequestedOnBehalf = (items: any) => {
let userTrim: string = "";
if (items !== null && items.length > 0) {
userTrim = items[0].loginName.replace("i:0#.f|membership|","");
console.log(items[0].id, 'items[0].id');
console.log(items[0], 'items[0]');
console.log(userTrim, 'userTrim');
setRequestedOnBehalfId(userTrim);
// setRequestedOnBehalfEmail([userTrim]);
} else {
setRequestedOnBehalfId(null);
setRequestedOnBehalfEmail(null);
}
};
我可以使用什么?
每个“站点”都有自己的内部用户数据库,这意味着,令人沮丧的是,同一个用户将在 SharePoint 环境中拥有一大堆不同的 ID - 正是您所看到的。不过,使用 pnp js 库(与您已经使用的 pnp 人员选择器属于同一系列的一部分)很容易解决。
该库中有一种方法:
a.确认特定站点中是否存在该用户的记录 b.如果不存在则添加它,并且 C。返回结果,其中包括特定于您要连接的站点的用户 ID。