Select a sequence of dates in Calendar

19 Dec 20224 minutes to read

The following example demonstrates how to select the week dates of chosen date in the Calendar using values property, when isMultiSelection property is enabled. Methods of Moment.js is used in this sample for calculating the start and end of week from the selected date.

@Html.EJS().Calendar("calendar").Change("onChange").IsMultiSelection(true).Render()

<div class='e-btn-group e-vertical'>
    @Html.EJS().Button("workweek").Content("Work Week").Render()
    @Html.EJS().Button("week").Content("Week").Render()
</div>
<script>

    function onChange(args) {
        calendar = document.getElementById('calendar').ej2_instances[0];
        var startOfWeek = moment(calendar.value).startOf('week');
        var endOfWeek = moment(calendar.value).endOf('week');
        if (calendar.element.classList.contains('workweek')) {
            getWeekArray(startOfWeek.day(1), endOfWeek.day(5));
        }
        else if (calendar.element.classList.contains("week")) {
            getWeekArray(startOfWeek, endOfWeek);
        }
    }
    function getWeekArray(startOfWeek, endOfWeek) {
        var days = [];
        var day = startOfWeek;
        while (day <= endOfWeek) {
            days.push(day.toDate());
            day = day.clone().add(1, 'd');
        }
        calendar.values = days;
    }

    document.addEventListener('DOMContentLoaded', function () {
        var calendar = document.getElementById('calendar').ej2_instances[0];

        /*selected current week dates when click the button*/
        document.getElementById('workweek').addEventListener('click', function () {
            if (calendar.element.classList.contains('week')) {
                calendar.element.classList.remove('week');
            }
            calendar.element.classList.add('workweek');
        })
        /*selected current week dates when click the button*/
        document.getElementById('week').addEventListener('click', function () {
            if (calendar.element.classList.contains('workweek')) {
                calendar.element.classList.remove('workweek');
            }
            calendar.element.classList.add('week');
        })
    });
</script>
<style>
    .btncontainer {
        display: inline-block;
        float: right;
        margin-left: 85px;
        margin-top: 120px;
    }
    .e-btn-group.e-vertical{
        margin-top: 25px;
    }
</style>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace EJ2CoreSampleBrowser.Controllers
{
    public class CalendarController : Controller
    {
        public ActionResult Multi()
        {
            return View();
        }
    }
}

NOTE

View Sample in GitHub.