【发布时间】:2021-01-29 20:12:24
【问题描述】:
我创建了一个过滤器文本字段,它成功地过滤了 Web 部件上的列表。它目前只接受一个数字,我希望它能够按文本过滤。 SharePoint 中的列称为 PPName。
我了解如何实现 JavaScript 进行过滤,但在这种情况下,它需要应用到 sp.web.lists.getByTitle().items.filter().get(),我无法弄清楚。
这是文本字段上的过滤器功能:
如您所见,我已使用 let _item2 过滤并返回结果,这实际上会正确过滤我在字段中输入的内容,但它不会按字母过滤,只会按完全匹配过滤。我想不出如何在它下面的sp.web.lists... 中使用这个过滤的_item2。
private _filter = (ev: React.FormEvent<HTMLInputElement>, newValue?: string) => {
this.setState({
filterValue: newValue,
}, () => {
const sid = this.state.filterValue;
let _item = this.state.Items.filter((item) => {return item.Id == sid; });
let _item2 = this.state.Items.filter((item) => {return item.PPName == sid; });
if (_item && _item.length > 0) {
sp.web.lists.getByTitle("MyList").items.filter("Id eq '" + sid + "'").get()
.then((items: any[]) => {
let returnedItems: IEIAItem[] = items.map((item) => { return new EIAItem(item); });
console.log(returnedItems, 'returnedItems, for ID');
this.setState({
ItemsForPages: returnedItems
});
});
} else if(_item && _item.length === 0){
this._getListItems();
var AllItems = this.state.Items;
this.setState({
ItemsForPages: AllItems,
isFiltered: 'false'
});
}
if (_item2 && _item2.length > 0) {
sp.web.lists.getByTitle("MyList").items.filter("PPName eq '" + sid + "'").get()
.then((items: any[]) => {
let returnedItems: IEIAItem[] = items.map((item) => { return new EIAItem(item); });
this.setState({
ItemsForPages: returnedItems
});
});
} else if(_item && _item.length === 0){
this._getListItems();
var AllItems2 = this.state.Items;
this.setState({
ItemsForPages: AllItems2,
isFiltered: 'false'
});
}
});
} `
任何帮助自然不胜感激。
【问题讨论】:
标签: javascript filter sharepoint-online spfx