如何将人员选择器值从 Teams 提交到 SharePoint

问题描述 投票:0回答:1

我创建了一个 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);
        }
    };

我可以使用什么?

microsoft-teams spfx pnp-js
1个回答
0
投票

每个“站点”都有自己的内部用户数据库,这意味着,令人沮丧的是,同一个用户将在 SharePoint 环境中拥有一大堆不同的 ID - 正是您所看到的。不过,使用 pnp js 库(与您已经使用的 pnp 人员选择器属于同一系列的一部分)很容易解决。

该库中有一种方法:

a.确认特定站点中是否存在该用户的记录 b.如果不存在则添加它,并且 C。返回结果,其中包括特定于您要连接的站点的用户 ID。

查看更多信息https://pnp.github.io/pnpjs/sp/webs/#ensureuser

© www.soinside.com 2019 - 2024. All rights reserved.