我正在为使用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 回答
我做了类似的事情,我使用一个REST调用来获取所有信息,包括扩展列 . 您只需要扩展查找,其他列无缝地工作 .
类似于
"Id, Title, PeopleField1/Id, PeopleField1/Title, PeopleField1/EMail, FieldX, FieldY"
的列,只有"PeopleField1"
用于展开 .