Как получить элементы из определенных представлений списка Sharepoint в SPFX?

Я пытаюсь получить элементы из определенного представления списка Sharepoint в SPFX с помощью библиотеки @ pnp / sp, но я не могу этого сделать. Я могу получить свойства представления и поля списка. Я не нашел ничего как такового, чтобы получить элементы этого представления. Как я смогу добиться того же, и мой список также содержит столбцы подстановки.


person Aroj Subedi    schedule 08.06.2020    source источник


Ответы (1)


Нет прямой функции, которая поддерживала бы получение элементов из определенного представления. Вместо этого необходимо получить запрос CAML из ListView, а затем получить элементы на основе запроса CAML, вот фрагмент кода для справки:

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

Вот похожая ветка для вашей справки:

Как получить элементы списка sharepoint по представлениям в spfx ?

person Jerry    schedule 08.06.2020