We have noticed that when you choose 'Yearly' in the recurrence editor that the text 'Recur every' shows up twice in the editor. If you change it to 'Monthly' or any other type of recurrence, this does not happen, and the text only shows up once.
The issue can be replicated in Binding to Generic List live demo.
Test Environment:
OS: Windows_11URL: https://demos.telerik.com/aspnet-ajax/scheduler/examples/overview/defaultcs.aspx
Repro Steps:
1. Open URL: https://demos.telerik.com/aspnet-ajax/scheduler/examples/overview/defaultcs.aspx page in Edge Browser.
2. In the calendar, TAB through the controls "Mon, 30", "Tue, 31", "Wed, 1", etc.
3. Observe the issue that the controls do not display a focus outline when they receive focus.
Actual Behavior:
Focus indicator is not visible on the controls, "Mon, 30", "Tue, 31", "Wed, 1", etc.
Expected Behavior:
Focus indicator(s) must be clearly visible on each interactive element when navigating the page using the tab key.
When the Scheduler is in an initially hidden container, the appearance is broken.
Solution: call the .repaint() method of the control as soon as the parent becomes visible
WORKAROUND approved by ADMIN: Set the LocalizationPath in the code behind, e.g. in Page_Load event
Event log stack trace:
Anwendung: devenv.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.NullReferenceException
bei Telerik.Web.LocalizationProvider+XmlResourceLocator.LoadResources(System.Globalization.CultureInfo)
bei Telerik.Web.LocalizationProvider+XmlResourceLocator..ctor(System.String, Telerik.Web.ILocalizableControl, System.String)
bei Telerik.Web.LocalizationProvider..ctor(System.String, Telerik.Web.ILocalizableControl, System.String)
bei Telerik.Web.UI.RadScheduler.get_Localization()
bei Telerik.Web.Design.RadSchedulerLocalization.Initialize()
bei Telerik.Web.Design.WizardTabControl.WizardForm_Load(System.Object, System.EventArgs)
bei System.Windows.Forms.Form.OnLoad(System.EventArgs)
bei System.Windows.Forms.Form.OnCreateControl()
bei System.Windows.Forms.Control.CreateControl(Boolean)
bei System.Windows.Forms.Control.CreateControl()
bei System.Windows.Forms.Control.WmShowWindow(System.Windows.Forms.Message ByRef)
bei System.Windows.Forms.Control.WndProc(System.Windows.Forms.Message ByRef)
bei System.Windows.Forms.ScrollableControl.WndProc(System.Windows.Forms.Message ByRef)
bei System.Windows.Forms.Form.WmShowWindow(System.Windows.Forms.Message ByRef)
bei System.Windows.Forms.Form.WndProc(System.Windows.Forms.Message ByRef)
bei System.Windows.Forms.Control+ControlNativeWindow.OnMessage(System.Windows.Forms.Message ByRef)
bei System.Windows.Forms.Control+ControlNativeWindow.WndProc(System.Windows.Forms.Message ByRef)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr, Int32, IntPtr, IntPtr)
When trying to drag and drop an appointment over the All Day slot, the ghost element is not positioned properly. This is easily observed when the browser is zoomed.
Replicated on the Overview demo
Hover over the command arrows on the radScheduler when the view is set to month view. The Tooltip will display "next day" and "previous day" instead of "next month" and "previous month".
The same happens for week view.
Temporary workaround:
<telerik:RadCodeBlock runat="server">
<script>
function pageLoadHandler() {
var scheduler = $find("<%= RadScheduler1.ClientID %>");
var $scheduler = $telerik.$(scheduler.get_element());
var viewType = "Day";
if (scheduler.get_selectedView() == Telerik.Web.UI.SchedulerViewType.WeekView) {
viewType = "Week";
} else if (scheduler.get_selectedView() == Telerik.Web.UI.SchedulerViewType.MonthView) {
viewType = "Month";
}
$scheduler.find(".rsPrevDay").attr("title", "Previous " + viewType)
$scheduler.find(".rsNextDay").attr("title", "Next " + viewType)
// Sys.Application.remove_load(pageLoadHandler);
}
Sys.Application.add_load(pageLoadHandler);
</script>
</telerik:RadCodeBlock>
<
telerik:RadScheduler
RenderMode
=
"Lightweight"
Font-Size
=
"14px"
runat
=
"server"
ID
=
"RadScheduler1"
SelectedDate
=
"2012-04-16"
OnClientAppointmentClick
=
"OnClientAppointmentClick"
OnClientAppointmentResizeEnd
=
"OnClientAppointmentResizeEnd"
>
</
telerik:RadScheduler
>
<script>
function
OnClientAppointmentResizeEnd(sender, args) {
}
function
OnClientAppointmentClick(sender, args) {
alert(
"OnClientAppointmentClick"
)
}
</script>
private
const
string
ProviderSessionKey =
"Telerik.Web.Examples.Scheduler.XmlSchedulerProvider.DefaultCS"
;
// You can safely ignore this method.
// Its purpose is to limit the changes to the underlying data only to the active user session.
protected
void
Page_Init(
object
sender, EventArgs e)
{
Telerik.Web.UI.XmlSchedulerProvider provider;
if
((Session[ProviderSessionKey] ==
null
) || (!IsPostBack))
{
provider =
new
Telerik.Web.UI.XmlSchedulerProvider(Server.MapPath(
"~/App_Data/Appointments.xml"
),
true
);
Session[ProviderSessionKey] = provider;
}
else
{
provider = (Telerik.Web.UI.XmlSchedulerProvider)Session[ProviderSessionKey];
}
RadScheduler1.Provider = provider;
}
https://www.screencast.com/t/OQyCn2jM
https://www.screencast.com/t/KlQtYDOxl Workaround: var $ = $ || $telerik.$; var $T = Telerik.Web.UI; var $TS = $T.Scheduler, $TSR = $TS.Rendering, $DateTime = $TS.DateTime; var $SB = Telerik.Web.StringBuilder, timePerMinute = 60000, timePerHour = timePerMinute * 60, timePerDay = timePerHour * 24, daysInWeek = 7, roundedCornersHeight, anchorDateFormat = "yyyy-MM-dd"; $TSVM = Telerik.Web.UI.Scheduler.Views.Month; $TSVM.Model.prototype._createTimeSlot = function (rawIndex, startTime, element) { if (startTime.getHours() == 23) { startTime = $DateTime.add(startTime, 2 * timePerHour); } return new $TSVM.TimeSlot(rawIndex, startTime, element); } $TSVM.Model.prototype.getTimeSlotFromDomElement = function (domElement) { var rawIndex = this._getRawIndexFromDomElement(domElement), startTime = this._getTimeFromDomElement(domElement); if (startTime.getHours() == 23) { startTime = $DateTime.add(startTime, 2 * timePerHour); } return new $TSVM.TimeSlot(rawIndex, startTime, domElement); } Telerik.Web.UI.Scheduler.Rendering.MonthViewRenderer.prototype._updateColumnHeaders = function () { var renderer = this, dayHeaderDateFormat = this._model.get_dayHeaderDateFormat(), firstDayHeaderDateFormat = this._model.get_firstDayHeaderDateFormat(), currentMonth = renderer._owner.get_selectedDate().getMonth(), visibleRangeStart = renderer._model.get_visibleRangeStart(); $.each(this._contentTables, function () { var dateLabels = $("td div.rsDateWrap div.rsDateBox a", this), dayStart = visibleRangeStart, weekDayIndex = 0, weekStart = new Date(dayStart.getTime()); dateLabels.each(function () { var isFirstVisibleDateOfMonth = $DateTime.subtract(dayStart, visibleRangeStart) == 0 && dayStart.getMonth() == currentMonth; var dateHeaderText; if (renderer._owner._renderMode == $T.RenderMode.Mobile) { dateHeaderText = dayStart.getDate().toString(); } else if (dayStart.getDate() == 1 || isFirstVisibleDateOfMonth) { dateHeaderText = dayStart.localeFormat(firstDayHeaderDateFormat); } else { dateHeaderText = renderer._getFormattedDateText(dayStart, dayHeaderDateFormat); } this.href = "#" + dayStart.format(anchorDateFormat); this.innerHTML = dateHeaderText; this.title = dayStart.localeFormat(Sys.CultureInfo.CurrentCulture.dateTimeFormat.ShortDatePattern); var otherMonthCell = currentMonth != dayStart.getMonth(), dateWrapElement = this.parentNode.parentNode.parentNode; $(dateWrapElement).toggleClass('rsOtherMonth', otherMonthCell); if (weekDayIndex == renderer._weekLength - 1) { // Move to the next week, skipping invisible days. weekStart = $DateTime.add(weekStart, 7 * timePerDay); dayStart = new Date(weekStart.getTime()); weekDayIndex = 0; } else { dayStart = $DateTime.add(dayStart, timePerDay); weekDayIndex++; } if (dayStart.getHours() == 23) { dayStart = $DateTime.add(dayStart, 2 * timePerHour); } else if (dayStart.getHours() == 1) { dayStart = $DateTime.add(dayStart, -timePerHour); } if (weekStart.getHours() == 23) { weekStart = $DateTime.add(weekStart, 2 * timePerHour); } else if (weekStart.getHours() == 1) { weekStart = $DateTime.add(dayStart, -timePerHour); } // Wrappers are cleared here to avoid second // traversal of the cells. renderer._clearExtraWraps(dateWrapElement); }); }); }
There is a display issue when using the agenda view - if there are fewer than 4 events displayed then clicking on the date range in the header shows a calendar which is clipped at the bottom. Presumably this is due to it being constrained by the height of the events area. This occurs even though there is plenty of height available to the control. Please see the attached screenshot which is taken from your demo site: http://demos.telerik.com/aspnet-ajax/scheduler/examples/overview/defaultcs.aspx
The Button text initially shows "Never", even though the appointment has a different recurrence. https://www.screencast.com/t/55Rl1CSa7F7y
When the timezone of the client is before UTC (e.g. UTC -1 or UTC -3) if you use the calendar for navigation, you will be navigated to the day before the selected one.