首页 文章

自定义编辑表单与人员选择器

提问于
浏览
1

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

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

我目前设置列值的工作流程如下 .

  • 编辑表单componentDidMount获取所有当前列值的get请求

  • 加载的值设置为状态

  • “编辑”表单上的子组件将this.state.loadedValues作为prop值发送

  • 在子组件中,该值设置为this.props.value

目前看来,如果我想用当前值填充我的React组件,我将首先对常规列进行正常的“get”REST调用,然后单独的REST调用并为每个人选择器执行选择和扩展我添加到我的表单中 . 有没有更好的方法呢?

这是我的通用get请求:

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);
        });

1 回答

  • 0

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

    类似于 "Id, Title, PeopleField1/Id, PeopleField1/Title, PeopleField1/EMail, FieldX, FieldY" 的列,只有 "PeopleField1" 用于展开 .

相关问题