The DateRangeBox component allows users to select a date range with ease. The component includes input boxes for start/end dates and a drop-down date picker.
This demo illustrates how to apply the following DateRangeBox settings:
value An array where you can specify the selected range (start/end dates). The DateRangeBox also allows you to define start/end dates separately. For this purpose, use the startDate and endDate properties instead.
displayFormat Date display format. You can use one of our predefined formats or specify a custom format as needs dictate. This demo illustrates the latter.
disabled
Specifies whether the DateRangeBox responds to user interaction.
showClearButton Displays a button that clears DateRangeBox values.
multiView Switches between our single-month and two-month dropdown calendar.
applyValueMode
Defines whether the selected value is applied instantly or after a user clicks the Apply button.
To get started with the DevExtreme DateRangeBox component, refer to the Getting Started with DateRangeBox tutorial.
<div class="dx-fieldset">
<div class="dx-field">
<div class="dx-field-label multiline-label">
<span>Default functionality</span>
<div class="selected-days-wrapper">
<span>Days selected: </span>
<span id="days-selected"></span>
</div>
</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.Value(new JS("initialValue"))
.OnValueChanged("showSelectedDays")
)
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Custom format</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.Value(new JS("initialValue"))
.DisplayFormat("EEEE, MMM dd")
)
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Use buttons to apply selection</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.ApplyValueMode(EditorApplyValueMode.UseButtons)
)
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Single-calendar view</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.MultiView(false)
)
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Calendar only appears on icon click</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.OpenOnFieldClick(false)
)
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Limit available dates (this month)</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.Min(new JS("minValue"))
.Max(new JS("maxValue"))
)
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Disable out of range selection</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.DisableOutOfRangeSelection(true)
)
</div>
</div>
<div class="dx-field">
<div class="dx-field-label">Clear button</div>
<div class="dx-field-value">
@(Html.DevExtreme().DateRangeBox()
.ShowClearButton(true)
.Value(new JS("initialValue"))
)
</div>
</div>
</div>
<script>
var msInDay = 1000 * 60 * 60 * 24;
var now = new Date();
var initialValue = [
new Date(now.getTime() - msInDay * 3),
new Date(now.getTime() + msInDay * 3),
];
var lastDay = new Date(now.getFullYear(), now.getMonth() + 1, 0).getDate();
var minValue = new Date(now.setDate(1));
var maxValue = new Date(now.setDate(lastDay));
function showSelectedDays({ value: [startDate, endDate] }) {
let daysCount = 0;
if (startDate && endDate) {
daysCount = (endDate - startDate) / msInDay + 1;
}
$('#days-selected').text(daysCount);
}
$(function() {
showSelectedDays({ value: initialValue });
});
</script>
using System.Web.Mvc;
namespace DevExtreme.MVC.Demos.Controllers {
public class DateRangeBoxController : Controller {
public ActionResult Overview() {
return View();
}
}
}
.demo-container {
height: 690px;
}
.dx-field {
padding: 8px;
}
.selected-days-wrapper {
font-size: 12px;
opacity: 0.5;
}
.multiline-label {
padding-top: 0;
}