Presently RadCalendar does not support Persian calendar style.
Allow RadCalendar to have multiview based on years or months. Resolution: With our latest release(Q2 2014) we are introducing new navigation mode that has very similar behavior the described one. To take the advantages of new mode you need only to set the HeaderNavigationMode property to "Zoom": For example : this.radCalendar1.HeaderNavigationMode = HeaderNavigationMode.Zoom;
Add functionality to customize navigation steps in multiple view of the RadCalendar.
FIX. RadCalendar - add NewDate and OldDate to the SelectionEventArgs of the SelectionChanging event
It will be nice if RadCalendar can show a popup list containing years. Currently, it supports only a list of months.
To reproduce: 1. When set the Disabled to true of special day has not effect this.radCalendar1.SpecialDays.Add(new RadCalendarDay(new DateTime(2014,7, 15))); this.radCalendar1.SpecialDays[0].Disabled = true; 2. When set the Selected and Selectable to false, the special day is still can select and highlight this.radCalendar1.SpecialDays[0].Selected = false; this.radCalendar1.SpecialDays[0].Selectable = false;
RangeMinDate and RangeMaxDate properties of RadCalendar are not taken under consideration when a date is being selected.
The following line does not move MultiMonthView to the specific date: radCalendar1.CalendarElement.View.ViewStartDate = new DateTime(DateTime.Now.Year, 1, 1); Workaround: use RadCalendar's FocusedDate property instead: radCalendar1.FocusedDate = new DateTime(2014, 1, 1);
Adding the following method CalendardDayCollection.AddRange(IEnumerable Of Date) is an easy way to populate the collection
HeaderWidth and HeaderHeight properties should be made RadProperties and should be declared at RadCalendarElement. This will allow our users to set these properties in theme.
Meanwhile, you can workaround this by resetting the property every time you change the number of months that RadCalendar displays. This is shown in the next code snippet: private void radPageViewPage2_ClientSizeChanged(object sender, EventArgs e) { int numViews = this.radPageViewPage2.Size.Height / 240 + 1; radCalendar1.MultiViewRows = numViews; radCalendar1.ShowFastNavigationButtons = true; radCalendar1.ShowFastNavigationButtons = false; }
To reproduce: use the following code snippet: public Form1() { InitializeComponent(); this.radCalendar1.AllowMultipleView = true; this.radCalendar1.MultiViewRows = 3; this.radCalendar1.MultiViewColumns = 4; this.radCalendar1.AllowMultipleSelect = true; this.radCalendar1.ShowRowHeaders = true; this.radCalendar1.ShowColumnHeaders = true; this.radCalendar1.AllowColumnHeaderSelectors = true; this.radCalendar1.AllowRowHeaderSelectors = true; this.radCalendar1.ShowViewSelector = true; this.radCalendar1.AllowViewSelector = true; this.radCalendar1.RangeMinDate = new DateTime(2014, 3, 3); this.radCalendar1.RangeMaxDate = new DateTime(2014, 7, 27); this.radCalendar1.FocusedDate = new DateTime(2014, 5, 5); } Please refer to the attached gif file. Workaround: private void Calendar_MouseDown(object sender, MouseEventArgs e) { CalendarCellElement cell = this.radCalendar1.CalendarElement.ElementTree.GetElementAtPoint(e.Location) as CalendarCellElement; if (cell != null && cell.Date < this.radCalendar1.RangeMinDate && (bool)cell.GetValue(CalendarCellElement.IsHeaderCellProperty) == true) { foreach (MonthViewElement monthView in this.radCalendar1.CalendarElement.CalendarVisualElement.Children[0].Children.Last().Children) { { foreach (CalendarCellElement monthCell in monthView.TableElement.Children) { if (monthCell.Date.Month == cell.Date.Month && monthCell.Date.Year == cell.Date.Year && this.radCalendar1.RangeMinDate <= monthCell.Date)// && // (bool)cell.GetValue(CalendarCellElement.IsHeaderCellProperty) == false) { if (char.IsLetter(cell.Text[0])) { //perform column selection if (monthCell.ControlBoundingRectangle.X == cell.ControlBoundingRectangle.X) { this.radCalendar1.SelectedDates.Add(monthCell.Date); } } else { //perform row selection if (monthCell.ControlBoundingRectangle.Y == cell.ControlBoundingRectangle.Y) { this.radCalendar1.SelectedDates.Add(monthCell.Date); } } } } } } } }
To reproduce: use the following code snippet: radCalendar1.AllowMultipleSelect = true; radCalendar1.ShowRowHeaders = true; radCalendar1.AllowRowHeaderSelectors = true; If you select several cells, they all are selected. Then, click the header row cell. You will notice that the cells from this row are selected but all previously selected cells are cleared. The attached gif file illustrates the behavior. Workaround: use the MouseDown event to store the currently selected cells and then on MouseUp restore the missing selection: public class MyCalendar : RadCalendar { List<DateTime> selectedDays = new List<DateTime>(); protected override void OnMouseDown(MouseEventArgs e) { CalendarCellElement cell = this.ElementTree.GetElementAtPoint(e.Location) as CalendarCellElement; if (cell != null) { bool isHeader = (bool)cell.GetValue(CalendarCellElement.IsHeaderCellProperty); if (isHeader) { selectedDays.Clear(); foreach (DateTime date in this.SelectedDates) { selectedDays.Add(date); } } } base.OnMouseDown(e); } protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); foreach (DateTime date in selectedDays) { if (!this.SelectedDates.Contains(date)) { this.SelectedDates.Add(date); } } } public override string ThemeClassName { get { return typeof(RadCalendar).FullName; } } }
To reproduce: use the following code snippet: public Form1() { InitializeComponent(); this.radCalendar1.AllowMultipleView = true; this.radCalendar1.MultiViewRows = 3; this.radCalendar1.HeaderNavigationMode = Telerik.WinControls.UI.HeaderNavigationMode.Zoom; }
To reproduce: - Add RadCalendar to a blank form and set its AllowMultipleSelect property to true. - Select a date and deselect it right after that. You will notice that the background is not changed. - The cell is actually deselected but it appears as selected since it is the focused cell and the styles are equal. Workaround: Change the style for the focused state, which will allow the user to distinguish between focused and selected cells.
The event should fire so one can customize the appearance on loading.
To reproduce: select 01/01/0001 and click the previous button
By default, if you need to format the cells in RadCalendar, the ElementRender event is an appropriate solution. However, it doesn't process the row/column header cell elements illustrated in the attached screenshot.
Workaround:
MonthViewElement mve = (MonthViewElement)this.radCalendar1.CalendarElement.CalendarVisualElement;