Hello friends, in this article we will learn how to get the publishing image column from a SharePoint list using Rest Api in SharePoint Framework (SPFx).
Scenario
You are having a SharePoint list with a publishing column. You need to read an image from a publishing image column. Using this Rest API call, you can read the image URL from the publishing image column.
I am having a list named Webpart_Background_ImageURL. I want to get the Publishing Image column with an internal name (BackgroundImage_URL). I am passing a filter where Title = OfficeLocationBackground.
I have written this code in webpart.tsx file.
I am having a list named Webpart_Background_ImageURL. I want to get the Publishing Image column with an internal name (BackgroundImage_URL). I am passing a filter where Title = OfficeLocationBackground.
I have written this code in webpart.tsx file.
Quick Answer
You can use the below code to get the image value:
private GetBackgroundImage(web: Web,backGroundImageKey : string, listTitle: string, selects: string[]) { return new Promise((resolve, reject) => { // this array will be all the results once we are done const itemsCollector = []; // build some query pieces to use const items = web.lists.getByTitle(listTitle).items; //const query = items.select.apply(items, selects); const query = items.filter("Title eq '"+backGroundImageKey+"'").select.apply(items, selects); // get the initial list of items query.get().then((results) => { // we will use a batch to save as much as possible on traffic const batch = web.createBatch(); // now we need to add all the requests to the batch // for each item we need to then make a seperate call to get the FieldValuesAsHtml for (let i = 0; i < results.length; i++) { // use the Item class to build our request for each item, appending FieldValuesAsHtml to url const htmlValues = new Item(items.getById(results[i].Id), "FieldValuesAsHtml"); htmlValues.select("BackgroundImage_URL").inBatch(batch).get().then(htmlValue => { // extend our item and push into the result set itemsCollector.push(Util.extend(results[i], { PublishingRollupImage: htmlValue.BackgroundImage_x005f_URL, })); }); } // execute the batch batch.execute().then(_ => { // use the behavior that all contained promises resolve first to ensure itemsCollector is populated resolve(itemsCollector); }); }).catch(e => { reject(e); }); }); } }
Usage
You can use the above function by calling it as shown below
import { Web, Item, Util, } from "sp-pnp-js"; const web = new Web(this.props.siteUrl); let backGroundImageList: string = "Webpart_Background_ImageURL"; let backGroundImageKey: string = "OfficeLocationBackground"; let items: any = []; items = await this.GetBackgroundImage(web, backGroundImageKey, backGroundImageList, ["Id", "Title", "FileRef"]);
0 Comments