0

我正在尝试使用 @pnp/sp 库从 SPFX 中 Sharepoint 列表的特定视图中获取项目,但我无法这样做。我能够获取列表的视图属性和字段。我没有找到任何东西来获取该视图的项目。我将如何能够实现相同的目标,并且我的列表也包含查找列。

4

1 回答 1

0

没有支持从特定视图获取项目的直接功能。相反,需要从 ListView 获取 CAML Query,然后根据 CAML Query 获取项目,这里有一个代码片段供您参考:

import { sp } from "@pnp/sp";
import "@pnp/sp/webs";
import "@pnp/sp/lists";
import "@pnp/sp/views";
import "@pnp/sp/items";
import { SPHttpClient, SPHttpClientConfiguration, SPHttpClientResponse,
  ISPHttpClientConfiguration } from '@microsoft/sp-http';

  public getListViewData():void{
    let listName = "JqueryList"; //The display name of the sharepoint list.
    let viewName = "All Items"; //The View Name

    HelloWorldWebPart.getViewQueryForList(listName,viewName).then((res:any) => {
        HelloWorldWebPart.getItemsByViewQuery(listName,res).then((items:any[])=>{
            items.forEach((item:any) => {
                console.log(item);
            });
        })
    }).catch(console.error);
}

//First method that retrieves the View Query
public static getViewQueryForList(listName:string,viewName:string):Promise<any> {
    let listViewData = "";
    if(listName && viewName){
        return sp.web.lists.getByTitle(listName).views.getByTitle(viewName).select("ViewQuery").get().then(v => {
            return v.ViewQuery;
        });
    } else {
        console.log('Data insufficient!');
        listViewData = "Error";
    }
}


//Second method that retrieves the View data based on the View Query and List name
public static getItemsByViewQuery(listName:string, query:string):Promise<any> {
    const xml = '<View><Query>' + query + '</Query></View>';
    return sp.web.lists.getByTitle(listName).getItemsByCAMLQuery({'ViewXml':xml}).then((res:SPHttpClientResponse) => {
        return res;
    })
}

这是一个类似的线程供您参考:

如何通过 spfx 中的视图获取共享点列表项?

于 2020-06-08T08:52:59.647 回答