sharepoint-online - 如何使用 pnp.sp 人员选取器设置 SharePoint 列表字段
问题描述
我不知道添加用户的代码,从 pnp.sp 库的人员选择器中选择。
我已经尝试了下面的代码示例(通过使用状态),但我知道这并没有保存用户的选择。
private _getPeoplePickerItems() {
pnp.sp.web.siteUsers.get().then((data) =>{
this.setState({
DeptContact: data
});
});
}
渲染中的人物选择器:
<PeoplePicker
context={this.props.context}
titleText="People Picker"
personSelectionLimit={3}
groupName={''}
showtooltip={false}
isRequired={false}
disabled={false}
selectedItems={this._getPeoplePickerItems}
showHiddenInUI={false}
principalTypes={[PrincipalType.User]}
resolveDelay={1000}
/>
</div>
</div>
我希望用户能够将用户输入到人员选择器中并解决它然后提交。然后将此用户添加到共享点列表中的“人员”列。
解决方案
我的测试代码供您参考(反应框架)。
import * as React from 'react';
import styles from './PnpReact.module.scss';
import { IPnpReactProps } from './IPnpReactProps';
import { escape } from '@microsoft/sp-lodash-subset';
import pnp from "@pnp/pnpjs";
import { PeoplePicker, PrincipalType } from "@pnp/spfx-controls-react/lib/PeoplePicker";
export interface IDefaultData{
PeoplePickerDefaultItems:string[];
}
export default class PnpReact extends React.Component<IPnpReactProps, IDefaultData> {
public constructor(props: IPnpReactProps,state: IDefaultData){
super(props);
this.state = {
PeoplePickerDefaultItems:[]
};
}
//get users from peoplepicker
private _getPeoplePickerItems(items: any[]) {
console.log(items);
}
public componentDidMount(){
this.GetDefaultUsers();
}
private GetDefaultUsers() {
pnp.sp.web.siteUsers.get().then((items: any[]) =>{
var defaultUsers:string[]=[];
//get last 2 users
for(var i=items.length-1;i>items.length-3;i--){
defaultUsers.push(items[i].Email);
}
this.setState({
PeoplePickerDefaultItems:defaultUsers
});
});
}
public render(): React.ReactElement<IPnpReactProps> {
return (
<div className={ styles.pnpReact }>
<div className={ styles.container }>
<div className={ styles.row }>
<PeoplePicker
context={this.props.context}
titleText="People Picker"
personSelectionLimit={3}
groupName={''}
showtooltip={false}
isRequired={false}
disabled={false}
selectedItems={this._getPeoplePickerItems}
defaultSelectedUsers={this.state.PeoplePickerDefaultItems}
showHiddenInUI={false}
principalTypes={[PrincipalType.User]}
resolveDelay={1000}
/>
<div className={ styles.column }>
<span className={ styles.title }>Welcome to SharePoint!</span>
<p className={ styles.subTitle }>Customize SharePoint experiences using Web Parts.</p>
<p className={ styles.description }>{escape(this.props.description)}</p>
<a href="https://aka.ms/spfx" className={ styles.button }>
<span className={ styles.label }>Learn more</span>
</a>
</div>
</div>
</div>
</div>
);
}
}
推荐阅读
- mysql - 我的代码没有将数据插入数据库
- laravel - Laravel 队列 - 我的 aync 队列不会触发电子邮件,而同步队列会触发
- python - 如何将2个列表中的项目连接成一个字符串
- list - 如何在 SwiftUI 列表中设置选定的行背景颜色?
- python-3.x - 我正在尝试编写一个重要的代码,但在第一行出现错误“SyntaxError:无效语法”,箭头指向“来自”
- python - 为什么 |= 可以对 Python 中的字典进行就地值更新?
- javascript - 在 React 中,单击时如何向按钮添加类
- javascript - FancyTree DnD 如何只允许放入有效文件夹而不是在父文件夹之外
- lua - 如何将字符串时间戳转换为 Lua(或其他语言)中的数组
- java - 如何通过一些基本的密码保护/身份验证从第三方应用程序(例如 Java 应用程序)访问 Laravel 存储中的文件?