jQuery

Dynamically Events Bind In Full Calendar

In this article, we will learn to Dynamically Events Bind In Full Calendar.

Full Calendar displays display your events on a nice, modern calendar script. Users can browse for your events per month, per week or per day from this calendar.

Let’s begin.

Please read this article first of all Here.

C# Code Example

Open the Models folder and make a class EventsModel and add the code in it.

public class EventsModel
{
    public string Title { get; set; }
    public DateTime DateTime { get; set; }
    public string FromTime { get; set; }
    public string ToTime { get; set; }
}

Open the app-calendar.js and add the below code in it.

var eventsDisplay = [];

var colorArr = ["#ff5722", "#9c27b0", "#e51c23", "#e91e63", "#3f51b5", "#ffc107", "#4a148c", "#009688", "#009688", "#4CAF50", "#00bcd4", "#a31d1d", "#4cb3be", "#19aa45", "#ba4e18", "#c49e15", "#e0c974", "#0883d6", "#ff5722", "#9c27b0", "#e51c23", "#e91e63", "#3f51b5", "#ffc107", "#4a148c"]

var Calendar = FullCalendar.Calendar;
var Draggable = FullCalendarInteraction.Draggable;
var containerEl = document.getElementById('external-events');
var calendarEl = document.getElementById('fc-external-drag');
var checkbox = document.getElementById('drop-remove');

$(document).ready(function () {
    debugger

    GetEvent();

    $('#external-events .fc-event').each(function () {
        // Different colors for events
        $(this).css({ 'backgroundColor': $(this).data('color'), 'borderColor': $(this).data('color') });
    });
    var colorData;
    $('#external-events .fc-event').mousemove(function () {
        colorData = $(this).data('color');
    })
    // Draggable event init
    new Draggable(containerEl, {
        itemSelector: '.fc-event',
        eventData: function (eventEl) {
            return {
                title: eventEl.innerText,
                color: colorData
            };
        }
    });
})


function GetEvent() {
    debugger
    eventsDisplay = [];
    $.ajax({
        url: "/Home/GetAllEvents",
        success: function (result) {
            if (result.IsSuccess) {
                debugger
                for (var i = 0; i < result.data.length; i++) {
                  
                        debugger
                    var startdate = combinedfullcalendartime(result.data[i].DateTime, result.data[i].FromTime);
                    var enddate = combinedfullcalendartime(result.data[i].DateTime, result.data[i].ToTime);
                        eventsDisplay.push({
                            eventID: 0,
                            title: result.data[i].Title,
                           start: startdate,
                            end: enddate,
                           color: colorArr[i],
                            //allDay: true
                        });

                    
                   

                }
            }


            GenerateCalender(eventsDisplay);
        },
        error: function (error) {
            alert('failed');
        }
    })
}

function combinedfullcalendartime(date, time) {
    debugger
    var time = time;
    time = time.split(' ');
    var newtime = time[0] + ":00";
  
    var newdate = date + "T" + newtime;
    return newdate;
}

function GenerateCalender(eventsdisplay) {
    debugger
    var d = new Date();

    var month = d.getMonth() + 1;
    var day = d.getDate();

    var output = d.getFullYear() + '-' +
        (month < 10 ? '0' : '') + month + '-' +
        (day < 10 ? '0' : '') + day;
     var calendar = new Calendar(calendarEl, {
        header: {
            left: 'prev,next today',
            center: 'title',
            right: "dayGridMonth,timeGridWeek,timeGridDay"
        },
        editable: true,
        plugins: ["dayGrid", "timeGrid", "interaction"],
        droppable: true,
        defaultDate: output,
       
        events: eventsdisplay,
       
        drop: function (info) {
            // is the "remove after drop" checkbox checked?
            if (checkbox.checked) {
                // if so, remove the element from the "Draggable Events" list
                info.draggedEl.parentNode.removeChild(info.draggedEl);
            }
        },
        viewRender: function (view, element) {

            $('.fc-center')[0].children[0].innerText = view.title.replace(new RegExp("undefined", 'g'), "");
        },
        eventDataTransform: function (event) {

            if (event.allDay) {
                event.end = moment(event.end).add(1, 'days')
            }
            return event;
        },
        eventClick: function (calEvent, jsEvent, view) {
            var events = calEvent.event._def.extendedProps;
            },
    });

    calendar.render();
    
}

Open the HomeController.cs and add the below code in it.

public JsonResult GetAllEvents()
 {
     try
     {

         IList<EventsModel> eventslist = new List<EventsModel>() {
          new EventsModel(){Title="Meeting", DateTime =DateTime.Now, FromTime="09:30 AM",ToTime="11:30 AM"},
         new EventsModel(){Title="Conference", DateTime = DateTime.Now, FromTime="10:30 AM",ToTime="12:25 AM"},
         new EventsModel(){Title="Long Event", DateTime = DateTime.Now, FromTime="07:30 PM", ToTime="11:30 PM"}
     };
       
       
         var modifiedData = eventslist.Select(d =>
             new
             {

                 DateTime = d.DateTime == null ? null : d.DateTime.ToString("yyyy-MM-dd"),
                 d.FromTime,
                 d.ToTime,
               d.Title

             }
             );

         return Json(new { IsSuccess = true, data = modifiedData }, JsonRequestBehavior.AllowGet);
     }
     catch (Exception ex)
     {

         return Json(new { IsSuccess = false, Message = ex.Message }, JsonRequestBehavior.AllowGet);
     }
 }

Open the Home.cshtml and add the below code in it.

<link href="~/Scripts/FullCalendarJs/Css/fullcalendar.min.css" rel="stylesheet" />
<link href="~/Scripts/FullCalendarJs/Css/daygrid.min.css" rel="stylesheet" />
<link href="~/Scripts/FullCalendarJs/Css/timegrid.min.css" rel="stylesheet" />
<link href="~/Scripts/FullCalendarJs/Css/app-calendar.css" rel="stylesheet" />

<div class="col s12">
    <div class="container">
        <div id="app-calendar">
            <div class="row">
                <div class="col s12">
                    <div class="card">
                        <div class="card-content">
                            <h4 class="card-title">
                                Basic Calendar
                            </h4>
                            <div id='fc-external-drag'></div>
                        </div>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

@section scripts
{
    <script src="~/Scripts/FullCalendarJs/moment.min.js"></script>
    <script src="~/Scripts/FullCalendarJs/fullcalendar.min.js"></script>
    <script src="~/Scripts/FullCalendarJs/daygrid.min.js"></script>
    <script src="~/Scripts/FullCalendarJs/timegrid.min.js"></script>
    <script src="~/Scripts/FullCalendarJs/interaction.min.js"></script>
    <script src="~/Scripts/FullCalendarJs/app-calendar.js"></script>
}

Output:

if you have any questions or issues about this article, please let me know and more information here.

Sagar Rana

Sagar Rana is a Web Developer in Vision Infotech. He has strong skills and knowledge of ASP.NET C#, ASP.NET MVC, .Net Core, Jquery, JavaScript, WEB API, React.js, ADO.Net, Entity Framework, SQL and different integration like Xero, Stripe, Zoho CRM, Square, PayTM, PayKUN, RazorPay, Quickbook Desktop etc.

Recent Posts

Testing hk

Testing

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

Operation

Testing

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

TETS NEW

test

3 years ago