【问题标题】:How do I fetch items from a specific view(s) of a Sharepoint list in SPFX?如何从 SPFX 中的 Sharepoint 列表的特定视图中获取项目?
【发布时间】:2020-06-08 16:52:59
【问题描述】:

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

【问题讨论】:

    标签: listview sharepoint sharepoint-2013 spfx pnp-js


    【解决方案1】:

    没有支持从特定视图获取项目的直接功能。 而是需要从 ListView 中获取 CAML Query,然后根据 CAML Query 获取项目,这里有一段代码 sn-p 供大家参考:

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

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

    How get sharepoint list items by view(s) in spfx?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-22
      • 2015-10-15
      • 2011-11-22
      • 2021-03-28
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多