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.
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)
Hi
I would like an extended feature to the iCal button that you get with RadScheduler which just deliver the one ical file type,
however it is typical on many event sites to offer alternative formats such as "[Google Outlook iCal Yahoo Apple]" because a user might be on an iPhone and so the text format might have the header information changed to make it natral for an iOS user, where as on an Android device making it natral to a google calendar would be a better fit.
It would be useful in the UserAgent was sniffed to offer a selection that is a natral fit of that environment.
An optional cookie could be left behind on that device to inform the control of the users preference so that is the head of the list.
This means that if Zoom or EventBrite used such a control (which they do) it would mean that your UI offers calendar events that connect to you, and so your UI is a little more sticky.
Sure we can say that the iCal control would do, as many calender's can cope, we could also show the button offering all the major brands and just render exactly the same content then its user error if the appointment not saved. But because Telerik is a leading UX brand, we don't want to know its an ical file we just want it to be a friction-less perfect fit into the users' calendar - they don't need to think it just gets done.
Thanks.
Doug
RE:
https://pages.jetbrains.com/dotnet-days-2020/web
https://splashthat.com/
https://support.google.com/calendar/thread/3231927?hl=en
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
Currently, the RadScheduler does not have WAI-ARIA support:
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;
}
I'm working on a project where I use RadScheduler TimeLineView (Grouping by resource) and one of the requirements is that they need the appointments that share a single resource to appear on the same row, instead of the current behaviour where they show on multiple rows. I believe adding that feature to the scheduler would give a lot of flexibility in such situations. Thank you very much
https://www.screencast.com/t/OQyCn2jM
Please add holiday functionality to RadScheduler - for ASP.NET Ajax, similar like you did for WinForms. Thanks!
The ASP.Net RadScheduler does not currently support recurring events in minute intervals (for example, every 15 minutes). Please add support for this. The feature would behave similarly to the feature in WinForms RadScheduler (Winforms RadScheduler does support minute interval recurring events). Thank you.
The RecurrenceRule does not have the correct Exceptions when modifying the series. The behavior in Outlook is to clear all exceptions when modifying the series. The behavior in Google Calendar is to consider the exception and modify the recurrence rule accordingly. Create a recurrence appointment (starts on 20th Feb at 8:00 am, recurring daily), whose recurrence rule will be stored in the database as (Picture 1): DTSTART:20180220T080000Z DTEND:20180220T083000Z RRULE:FREQ=DAILY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR,SA,SU Further, I create an exception on 23rd Feb, which changes the start time to 8:15 am. This now, in Addition to inserting a new record for the exception, updates the master's recurrence rule to (Picture 2): DTSTART:20180220T080000Z DTEND:20180220T083000Z RRULE:FREQ=DAILY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR,SA,SU EXDATE:20180223T080000Z So far, so good. Now I edit the master and change its start date to 19th Feb. I expect, that the master keeps the exception for 23rd, but the result is another one. The exception record is kept unchanged as expected! BUT the EXDATE in the master is wrong (Picture 3): DTSTART:20180219T080000Z DTEND:20180219T083000Z RRULE:FREQ=DAILY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR,SA,SU EXDATE:20180222T080000Z
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
When working with All-day appointments, it would be really nice to be able to resize them in the week view. In some cases when only working with All-day appointments, we were able to hide the time part of the Scheduler control entirely, but in this case the week view is almost pointless since our end users want to resize appointments a lot!