Monday, November 6, 2023

How to retrieve SharePoint list items bind into calendar react JS Spfx?

 To retrieve SharePoint list items using the PnP (Patterns and Practices) JavaScript library and bind them into a calendar, you can follow these steps:


1. **Set Up Your SPFx Project**:


   Create a new SPFx project or use an existing one. Make sure to include the necessary permissions to access the SharePoint site's lists.


2. **Install PnPjs**:


   In your SPFx project, install PnPjs to interact with SharePoint data:


   ```bash

   npm install @pnp/pnpjs

   ```


3. **Retrieve List Items from SharePoint List**:


   Use PnPjs to fetch items from the SharePoint list that you want to display in the calendar. For example, if you have a custom list called "Events":


   ```javascript

   import { sp } from '@pnp/sp';


   // Function to fetch events from SharePoint list

   const getEvents = async () => {

     try {

       const events = await sp.web.lists.getByTitle('Events').items.select('Title', 'EventDate', 'EndDate').get();

       return events;

     } catch (error) {

       console.error('Error fetching events:', error);

       return [];

     }

   };

   ```


   Make sure to adjust the `'Events'` parameter to match the title of your SharePoint list and select the columns you need.


4. **Use Fetched Data in Calendar Component**:


   Incorporate the retrieved data into your calendar component (you can use a calendar library like FullCalendar or any other). Here is an example using FullCalendar:


   ```javascript

   import * as React from 'react';

   import FullCalendar from '@fullcalendar/react';

   import dayGridPlugin from '@fullcalendar/daygrid';


   export default class CalendarWebPart extends React.Component {

     state = {

       events: [],

     };


     async componentDidMount() {

       const calendarEvents = await getEvents();

       this.setState({ events: calendarEvents });

     }


     render() {

       return (

         <div>

           <FullCalendar

             plugins={[dayGridPlugin]}

             initialView="dayGridMonth"

             events={this.state.events.map((event) => ({

               title: event.Title,

               start: new Date(event.EventDate),

               end: new Date(event.EndDate),

             }))}

           />

         </div>

       );

     }

   }

   ```


   Update the `events` property with the retrieved SharePoint list items, ensuring the data matches the format expected by your calendar library.


5. **Styles**:


   Include FullCalendar styles and customize CSS as needed.


6. **Build, Deploy, Test**:


   Build, package, and deploy your SPFx web part to your SharePoint environment. Test the web part to ensure it displays the SharePoint list items in the calendar component.


This approach uses PnPjs to fetch data from a SharePoint list and then displays it in a calendar component. Adjust the code according to your specific SharePoint list structure and calendar library.

No comments:

Post a Comment