Обновлять события динамически - PullRequest
2 голосов
/ 01 июня 2011

У меня есть пара запросов относительно полного календаря от arshaw ..

  1. когда я выбираю определенный отрезок дат и присваиваю соответствующий заголовок, как показано здесь я получаю событие, отображаемое в календаре ... но когда я хочу сохранить событие (я использую asp.net), то есть, скажем, после того, как пользователь нажимает кнопку сохранения, title, startdate, end date должен быть записан в events[{}] скрипта .. для этого я использую response.write("script /script(with the tags of course)") после нажатия кнопки, которая не работает .. кто-нибудь посоветует лучший или более простой способ работы?

  2. также как отключить свойство selectable? например, только администратор может установить событие, а пользователь может только видеть событие и не редактировать его.

1 Ответ

1 голос
/ 02 июня 2011

Не думаю, что вы можете обновить объект JavaScript события fullcalendar с помощью метода Response.Write ().

Вы должны использовать ajax для сохранения события на стороне сервера и обновления календаря на стороне клиента.Сделайте что-то вроде этого

 function saveEvent() {

    var event = { startDate: $('#txtDate').val(), description: $('#txtDescription').val(), id: id }


    $.ajax({
        type: "POST",
        async: false,
        url: "../UserCalendarService.asmx/SaveEvent",
        data: "{'startDate': '" + event.startDate + "','description':'" + event.description + "','id':'" + event.id + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            result = result.d;
            eventFound = $('#calendar').fullCalendar('clientEvents', result.id).length;
            if (eventFound == 1) {
                existingEvent = $('#calendar').fullCalendar('clientEvents', result.id);
                existingEvent[0].title = result.title;
                existingEvent[0].start = result.start;
                existingEvent[0].editable = result.editable;
                existingEvent[0].allday = true;
                $('#calendar').fullCalendar('updateEvent', existingEvent[0]);
            }
            else {
                $('#calendar').fullCalendar('renderEvent', {
                    title: result.title,
                    start: result.start,
                    id: result.id,
                    editable: result.editable,
                    allday: true
                },
             false // make the event "stick"
            );
            }
        },
        error: function (xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            if (err.Message == 'SomeErrorMessage') {
                //handleError, redirect or popup message
            }
        }
    });

}

Что касается вашего второго вопроса, у объекта события есть редактируемое свойство.Это правда или ложь.Вы можете найти больше об этом в надлежащей документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...