dashboard-devexpress-dot-dashboardwin-b1a59046.md
A Date Filter control used to visualize a Date Filter dashboard item’s data
Namespace : DevExpress.DashboardWin
Assembly : DevExpress.Dashboard.v25.2.Win.dll
NuGet Package : DevExpress.Win.Dashboard
public class DateFilterControl :
XtraUserControl,
IDashboardDateFilterControl,
ISupportFixedHeight
Public Class DateFilterControl
Inherits XtraUserControl
Implements IDashboardDateFilterControl,
ISupportFixedHeight
The following members return DateFilterControl objects:
Use the DashboardItemControlEventArgs.DateFilterControl property to access the DateFilterControl.
The code snippet below demonstrates how to access the underlying controls to customize the Date Filter dashboard item.
It changes the datepicker’s caption, background color and paints selected dates and dates contained in the underlying data in a custom manner.
using DevExpress.DashboardCommon.ViewerData;
using DevExpress.DashboardWin;
using DevExpress.XtraEditors.Controls;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
namespace DateFilter_Customization
{
public partial class Form1 : DevExpress.XtraEditors.XtraForm
{
DateTime minValue;
DateTime maxValue;
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
dashboardViewer1.DashboardItemControlCreated += DashboardViewer1_DashboardItemControlCreated;
dashboardViewer1.DashboardItemControlUpdated += DashboardViewer1_DashboardItemControlUpdated;
dashboardViewer1.DashboardItemBeforeControlDisposed += DashboardViewer1_DashboardItemBeforeControlDisposed;
}
private void Form1_Load(object sender, EventArgs e)
{
dashboardViewer1.LoadDashboard("Data\\datefilter-sample-dashboard.xml");
}
private void DashboardViewer1_DashboardItemControlCreated(object sender, DevExpress.DashboardWin.DashboardItemControlEventArgs e)
{
DashboardViewer designer = sender as DashboardViewer;
if (e.DateFilterControl != null)
{
SubscribeDateFilterControlEvents(e.DateFilterControl);
e.DateFilterControl.BackColor = Color.AliceBlue;
}
}
private void SubscribeDateFilterControlEvents(DateFilterControl dateFilter)
{
dateFilter.CalendarFrom.CustomDrawDayNumberCell += Calendar_CustomDrawDayNumberCell;
dateFilter.CalendarTo.CustomDrawDayNumberCell += Calendar_CustomDrawDayNumberCell;
dateFilter.CustomDisplayText += DateFilter_CustomDisplayText;
}
private void DateFilter_CustomDisplayText(object sender, CustomDisplayTextEventArgs e)
{
e.DisplayText = (e.Value is DateTime) ? string.Format("{0:d}", e.Value) : "Click for the Date Picker";
}
private void Calendar_CustomDrawDayNumberCell(object sender, DevExpress.XtraEditors.Calendar.CustomDrawDayNumberCellEventArgs e)
{
CalendarControl calendar = sender as CalendarControl;
if (e.Date > minValue && e.Date < maxValue)
e.Style.BackColor = Color.FromArgb(80, 0, 100, 10);
if (e.Selected && e.View == DateEditCalendarViewType.MonthInfo)
{
StringFormat dayFormat = new StringFormat();
dayFormat.Alignment = StringAlignment.Center;
dayFormat.LineAlignment = StringAlignment.Center;
Rectangle rect = e.ContentBounds;
rect.Inflate(2, 2);
Font cellFont = new Font(calendar.CalendarAppearance.DayCell.Font.FontFamily, calendar.CalendarAppearance.DayCell.Font.Size + 2);
e.Cache.FillRectangle(new SolidBrush(Color.Yellow), e.ContentBounds);
e.Cache.Graphics.DrawString($"{e.Date.Day}", cellFont, Brushes.Black, rect, dayFormat);
e.Handled = true;
}
}
private void DashboardViewer1_DashboardItemControlUpdated(object sender, DashboardItemControlEventArgs e)
{
if (e.DateFilterControl != null)
{
UpdateDateFilterControl(e.DateFilterControl);
}
}
private void UpdateDateFilterControl(DateFilterControl dateFilter)
{
MultiDimensionalData mddata = dashboardViewer1.GetItemData("dateFilterDashboardItem1");
IList<DateTime> values = mddata.GetMeasures().Select(measure => mddata.GetValue(measure).Value).OfType<DateTime>().ToList();
minValue = values.Min();
maxValue = values.Max();
}
private void UnsubscribeDateFilterControlEvents(DateFilterControl dateFilter)
{
CalendarControl calendarTo = dateFilter.CalendarTo;
CalendarControl calendarFrom = dateFilter.CalendarFrom;
calendarFrom.CustomDrawDayNumberCell -= Calendar_CustomDrawDayNumberCell;
calendarTo.CustomDrawDayNumberCell -= Calendar_CustomDrawDayNumberCell;
}
private void DashboardViewer1_DashboardItemBeforeControlDisposed(object sender, DashboardItemControlEventArgs e)
{
if (e.DateFilterControl != null)
{
UnsubscribeDateFilterControlEvents(e.DateFilterControl);
}
}
}
}
Imports DevExpress.DashboardCommon.ViewerData
Imports DevExpress.DashboardWin
Imports DevExpress.XtraEditors.Controls
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Drawing
Imports System.Linq
Namespace DateFilter_Customization
Partial Public Class Form1
Inherits DevExpress.XtraEditors.XtraForm
Private minValue As Date
Private maxValue As Date
Public Sub New()
InitializeComponent()
AddHandler Me.Load, AddressOf Form1_Load
AddHandler dashboardViewer1.DashboardItemControlCreated, AddressOf DashboardViewer1_DashboardItemControlCreated
AddHandler dashboardViewer1.DashboardItemControlUpdated, AddressOf DashboardViewer1_DashboardItemControlUpdated
AddHandler dashboardViewer1.DashboardItemBeforeControlDisposed, AddressOf DashboardViewer1_DashboardItemBeforeControlDisposed
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
dashboardViewer1.LoadDashboard("Data\datefilter-sample-dashboard.xml")
End Sub
Private Sub DashboardViewer1_DashboardItemControlCreated(ByVal sender As Object, ByVal e As DevExpress.DashboardWin.DashboardItemControlEventArgs)
Dim designer As DashboardViewer = TryCast(sender, DashboardViewer)
If e.DateFilterControl IsNot Nothing Then
SubscribeDateFilterControlEvents(e.DateFilterControl)
e.DateFilterControl.BackColor = Color.AliceBlue
End If
End Sub
Private Sub SubscribeDateFilterControlEvents(ByVal dateFilter As DateFilterControl)
AddHandler dateFilter.CalendarFrom.CustomDrawDayNumberCell, AddressOf Calendar_CustomDrawDayNumberCell
AddHandler dateFilter.CalendarTo.CustomDrawDayNumberCell, AddressOf Calendar_CustomDrawDayNumberCell
AddHandler dateFilter.CustomDisplayText, AddressOf DateFilter_CustomDisplayText
End Sub
Private Sub DateFilter_CustomDisplayText(ByVal sender As Object, ByVal e As CustomDisplayTextEventArgs)
e.DisplayText = If(TypeOf e.Value Is Date, String.Format("{0:d}", e.Value), "Click for the Date Picker")
End Sub
Private Sub Calendar_CustomDrawDayNumberCell(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Calendar.CustomDrawDayNumberCellEventArgs)
Dim calendar As CalendarControl = TryCast(sender, CalendarControl)
If e.Date > minValue AndAlso e.Date < maxValue Then
e.Style.BackColor = Color.FromArgb(80, 0, 100, 10)
End If
If e.Selected AndAlso e.View = DateEditCalendarViewType.MonthInfo Then
Dim dayFormat As New StringFormat()
dayFormat.Alignment = StringAlignment.Center
dayFormat.LineAlignment = StringAlignment.Center
Dim rect As Rectangle = e.ContentBounds
rect.Inflate(2, 2)
Dim cellFont As New Font(calendar.CalendarAppearance.DayCell.Font.FontFamily, calendar.CalendarAppearance.DayCell.Font.Size + 2)
e.Cache.FillRectangle(New SolidBrush(Color.Yellow), e.ContentBounds)
e.Cache.Graphics.DrawString($"{e.Date.Day}", cellFont, Brushes.Black, rect, dayFormat)
e.Handled = True
End If
End Sub
Private Sub DashboardViewer1_DashboardItemControlUpdated(ByVal sender As Object, ByVal e As DashboardItemControlEventArgs)
If e.DateFilterControl IsNot Nothing Then
UpdateDateFilterControl(e.DateFilterControl)
End If
End Sub
Private Sub UpdateDateFilterControl(ByVal dateFilter As DateFilterControl)
Dim mddata As MultiDimensionalData = dashboardViewer1.GetItemData("dateFilterDashboardItem1")
Dim values As IList(Of Date) = mddata.GetMeasures().Select(Function(measure) mddata.GetValue(measure).Value).OfType(Of Date)().ToList()
minValue = values.Min()
maxValue = values.Max()
End Sub
Private Sub UnsubscribeDateFilterControlEvents(ByVal dateFilter As DateFilterControl)
Dim calendarTo As CalendarControl = dateFilter.CalendarTo
Dim calendarFrom As CalendarControl = dateFilter.CalendarFrom
RemoveHandler calendarFrom.CustomDrawDayNumberCell, AddressOf Calendar_CustomDrawDayNumberCell
RemoveHandler calendarTo.CustomDrawDayNumberCell, AddressOf Calendar_CustomDrawDayNumberCell
End Sub
Private Sub DashboardViewer1_DashboardItemBeforeControlDisposed(ByVal sender As Object, ByVal e As DashboardItemControlEventArgs)
If e.DateFilterControl IsNot Nothing Then
UnsubscribeDateFilterControlEvents(e.DateFilterControl)
End If
End Sub
End Class
End Namespace
Object MarshalByRefObject Component Control ScrollableControl ContainerControl UserControl XtraUserControl DateFilterControl
See Also