Matt Dufrasne
                                            
                                    
    Top achievements
    
            
                
                Rank 1
            
    
                                        
                                        Matt Dufrasne
                                        asked on 24 Dec 2013, 01:39 AM
                                    
                                How can I prevent/cancel delete key presses from the scheduler control?
I've gone all over the API, but I can't find a way to intercept the delete key and prevent the default.
                                I've gone all over the API, but I can't find a way to intercept the delete key and prevent the default.
5 Answers, 1 is accepted
0
                                Hello Matt,
Alex Gyoshev
Telerik
                                        Do you want to prevent users from deleting events? If so, you can set the editable.destroy configuration option to false. If this is not what you are looking for, please clarify.
Regards,Alex Gyoshev
Telerik
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
                                
                                                    Matt Dufrasne
                                                    
                                            
    Top achievements
    
            
                
                Rank 1
            
    
                                                
                                                answered on 28 Dec 2013, 08:19 PM
                                            
                                        I have this code 
but the delete key is still being observed.
I load a reservation template with a delete button but I don't want anyone to be able to delete from the calendar itself.
I want the appointment template loaded and the appointment to be deleted from there.
I tried 2013.2.918 and 2013.3.1119
                                        001.window.scheduler = $('#scheduler').kendoScheduler({002.    allDaySlot: true,003.    selectable: true,004.    editable: {005.        confirmation: false,006.        resize: false,007.        move: false,008.        destroy: false,009.        update: false,010.        template: $(reservationEditorTemplate).html()011.    },012.    views: [013.        {014.            type: "week",015.            selected: true016.        },017.        {018.            type: "agenda",019.            eventTemplate: $(reservationAgendaTemplate).html()020.        }021.    ],022.    allDayEventTemplate: $(allDayReservationTemplate).html(),023.    eventTemplate: $(reservationTemplate).html(),024.    cancel: onReservationCancel,025.    edit: onReservationEdit,026.    save: onReservationSave,027.    add: onReservationAdd,028.    remove: onReservationRemove,029.    dataSource: {030.        batch: true,031.        serverFiltering: true,032.        error: function (e) {033.            console.log(e);034.        },035.        transport: {036.            read: {037.                url: "/ws/SchedulerService.svc/read",038.                dataType: "json"039.            },040.            update: {041.                url: "/ws/SchedulerService.svc/update",042.                type: "POST",043.                contentType: "application/json"044.            },045.            create: {046.                url: "/ws/SchedulerService.svc/create",047.                type: "POST",048.                contentType: "application/json"049.            },050.            destroy: {051.                url: "/ws/SchedulerService.svc/destroy",052.                dataType: "json"053.            },054.            parameterMap: function (options, operation) {055.                var _view = $('#scheduler').data('kendoScheduler').view();056. 057.                if (operation === "read")058.                    return {059.                        eIds: JSON.stringify(viewModel.getFiltereIds()),060.                        startDate: JSON.stringify(_view.startDate()),061.                        endDate: JSON.stringify(_view.endDate())062.                    };063. 064.                else if (operation === "destroy")065.                    return {066.                        reservationGuid: currentReservation.data.ReservationGuid067.                    };068. 069.                console.log(options);070. 071.                // This is a hack to get the post data but it's functional072.                return JSON.stringify({ reservation: JSON.stringify(currentReservation.data) });073.            }074.        },075.        schema: {076.            data: function (response) {077.                return $.parseJSON(response);078.            },079.            model: {080.                id: "reservationGuid",081.                createdBy: "createdByGuid",082.                fields: {083.                    reservationGuid: { from: "ReservationGuid", type: "string" },084.                    eId: { from: "eId", type: "number" },085.                    start: { type: "date", from: "StartDate" },086.                    end: { type: "date", from: "EndDate" },087.                    recurrenceId: { from: "RecurrenceID" },088.                    recurrenceRule: { from: "RecurrenceRule" },089.                    recurrenceException: { from: "RecurrenceException" }090.                }091.            }092.        }093.    },094.    resources: [095.        {096.            field: "eId",097.            dataValueField: "Id",098.            dataTextField: "Name",099.            dataColorField: "ColorKey",100.            title: "E",101.            dataSource: getEs()102.        }103.    ],104.    dataBinding: function () {105.        console.log('dataBinding');106.    },107.    dataBound: function () {108.        console.log('dataBound');109.    }110.});I load a reservation template with a delete button but I don't want anyone to be able to delete from the calendar itself.
I want the appointment template loaded and the appointment to be deleted from there.
I tried 2013.2.918 and 2013.3.1119
0
                                Hi Matt,
In case you want to prevent the Delete button (icon) from appearing inside the events on hover, you can use CSS:
The second line applies to the Agenda view.
Regards,
Dimo
Telerik
                                        In case you want to prevent the Delete button (icon) from appearing inside the events on hover, you can use CSS:
#scheduler .k-event .k-event-delete,#scheduler tr > td > .k-task .k-event-delete{   display: none;}The second line applies to the Agenda view.
Regards,
Dimo
Telerik
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
                                
                                                    Matt Dufrasne
                                                    
                                            
    Top achievements
    
            
                
                Rank 1
            
    
                                                
                                                answered on 07 Jan 2014, 01:44 AM
                                            
                                        Your recommendation is correct but selecting the meeting and hitting the delete key still removes the event.
                                        0
                                Accepted
Hi Matt,
One option is to disable selection (keyboard navigation).
http://docs.kendoui.com/api/web/scheduler#configuration-selectable
Another approach would be to hack the Scheduler's prototype and prevent the execution of the internal keydown handler if DEL is pressed:
 
 
 
 
Regards,
Dimo
Telerik
                                        One option is to disable selection (keyboard navigation).
http://docs.kendoui.com/api/web/scheduler#configuration-selectable
Another approach would be to hack the Scheduler's prototype and prevent the execution of the internal keydown handler if DEL is pressed:
$(function () {    var oldKeyDown = kendo.ui.Scheduler.fn._keydown;    kendo.ui.Scheduler.fn._keydown = function(e) {        if (e.keyCode != kendo.keys.DELETE) {            oldKeyDown.call(this, e);        }    }    $("#scheduler").kendoScheduler({ /* ... */ });});Regards,
Dimo
Telerik
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
