Back to Devexpress

DxDateRangePicker<T>.DayCellTemplate Property

blazor-devexpress-dot-blazor-dot-dxdaterangepicker-1-72a5b843.md

latest4.2 KB
Original Source

DxDateRangePicker<T>.DayCellTemplate Property

Specifies the template used to display day cells.

Namespace : DevExpress.Blazor

Assembly : DevExpress.Blazor.v25.2.dll

NuGet Package : DevExpress.Blazor

Declaration

csharp
[Parameter]
public RenderFragment<DateTime> DayCellTemplate { get; set; }

Property Value

TypeDescription
RenderFragment<DateTime>

The template content.

|

Remarks

You can use the DayCellTemplate property to highlight individual dates in the Date Range Picker’s calendar. The template’s context parameter allows you to access the current date-time object and its settings.

The following code applies different styles to different dates:

razor
<DxDateRangePicker @bind-StartDate="@DateTimeStart"
                   @bind-EndDate="@DateTimeEnd"
                   SizeMode="Params.SizeMode"
                   CssClass="cw-320"
                   InputId="deHighlightDates">
    <DayCellTemplate>
        <a class="@GetCssClassNames(context)">@context.Day.ToString()</a>
    </DayCellTemplate>
</DxDateRangePicker>
@* ... *@

@code {
    DateTime DateTimeStart { get; set; } = DateTime.Today;
    DateTime DateTimeEnd { get; set; } = DateTime.Today.AddDays(7);
    CalendarData Data { get; set; } = new CalendarData();

    string GetCssClassNames(DateTime date) {
        if(Data.PersonalDays.Exists(d => DaysEqual(d, date)))
            return "fw-bold text-success";
        if(Data.Holidays.Exists(d => DaysEqual(d, date)))
            return "text-danger";
        if(Data.BirthDates.Exists(d => DaysEqual(d, date)))
            return "fw-bold text-info";

        return null;
    }

    bool DaysEqual(DateTime date1, DateTime date2) {
        return (date1.Year == date2.Year && date1.DayOfYear == date2.DayOfYear);
    }

}
csharp
using System;
using System.Collections.Generic;
// ...
class CalendarData {
    public CalendarData() {
        DateTime baseDate = DateTime.Today;
        PersonalDays = GetPersonalDays(baseDate);
        Holidays = GetHolidays(baseDate);
        BirthDates = GetBirthDates(baseDate);
    }

    public List<DateTime> PersonalDays { get; }
    public List<DateTime> Holidays { get; }
    public List<DateTime> BirthDates { get; }

    List<DateTime> GetPersonalDays(DateTime baseDate) {
        return new List<DateTime>() {
                baseDate.AddDays(-7),
                baseDate.AddDays(-2),
                baseDate.AddDays(-1),
                baseDate.AddDays(3),
                baseDate.AddDays(4),
                baseDate.AddDays(9),
                baseDate.AddDays(10),
                baseDate.AddDays(12),
                baseDate.AddDays(15)
        };
    }

    List<DateTime> GetHolidays(DateTime baseDate) {
        return new List<DateTime>() {
                baseDate.AddDays(-14),
                baseDate.AddDays(-8),
                baseDate.AddDays(12),
                baseDate.AddDays(13)
        };
    }

    List<DateTime> GetBirthDates(DateTime baseDate) {
        return new List<DateTime>() {
                baseDate.AddDays(-20),
                baseDate.AddDays(-5),
                baseDate,
                baseDate.AddDays(1),
                baseDate.AddDays(6),
                baseDate.AddDays(7),
                baseDate.AddDays(17)
        };
    }
}
css
.dxbl-calendar-selected-range > a {
    color: #fff!important;
}
.dxbl-calendar-day > a {
    text-decoration: none;
}

Run Demo: Highlight Special Dates

See Also

DxDateRangePicker<T> Class

DxDateRangePicker<T> Members

DevExpress.Blazor Namespace