1

我正在为使用 office-ui-fabric-react 库构建的 SharePoint 创建自定义编辑表单。我最近在我的编辑表单中添加了一个人员选择器,并意识到查找列不会在正常的“获取”REST 调用中返回。似乎您必须为每个人员选择器进行选择和扩展。

我之前设置的 get 请求旨在通过自动调用列表名称和当前项目 ID 来尽可能地重复使用。在这一点上,我觉得我正在做一些艰难的事情,并想看看其他人是否有使用 React SharePoint 编辑表单中的人员选择器列的经验。

我当前设置列值的工作流程如下。

  1. 编辑表单 componentDidMount 启动对所有当前列值的获取请求
  2. 加载的值设置为状态
  3. Edit 表单上的子组件将 this.state.loadedValues 作为 prop 值向下发送
  4. 在子组件中,值设置为 this.props.value

目前看来,如果我想用当前值填充我的 React 组件,我必须首先对通常的列进行正常的“获取”REST 调用,然后进行单独的 REST 调用并为每个人选择器进行选择和展开我添加到我的表格中。有没有更好的方法来做到这一点?

这是我拥有的通用获取请求:

let req = new XMLHttpRequest;
        return new Promise((resolve, reject) => {
            req.open('GET', `${_spPageContextInfo.webAbsoluteUrl}/_api/Web/Lists/GetByTitle('${LIST_NAME}')/Items(${ITEM_ID})`, true);
            req.setRequestHeader('Content-Type', 'application/json;odata=verbose');
            req.setRequestHeader('Accept', 'application/json;odata=verbose');

            req.onload = async () => {
                // alert(req.status);
                if (req.status === 200) {
                    let response = JSON.parse(req.response);
                    resolve(response.d);
                } else {
                    reject(Error(req.statusText));
                }
            };
            req.onerror = () => {
                console.log(`Error: ${req.status}`);
                reject(Error('Network Error'));
            };
            req.send(null);
        });
4

1 回答 1

0

我做了类似的事情,我使用一个 REST 调用来获取所有信息,包括扩展列。您只需要扩展查找,其他列无缝工作。

类似于"Id, Title, PeopleField1/Id, PeopleField1/Title, PeopleField1/EMail, FieldX, FieldY"列的东西,仅"PeopleField1"用于扩展。

于 2017-08-21T23:44:06.350 回答