完整日历ASP.NET MVC更新数据库eventDragStop

时间:2015-01-07 14:07:14

标签: c# jquery-ui asp.net-mvc-5 asp.net-ajax fullcalendar

在JQUERY UI完整日历中进行更改时,有没有人知道如何更新我的基础数据源(sql server DB)?

我启用了FullCalendar插件,并且正在使用数据填充,我启用了拖放选项并且它们正常工作,显然这些更改没有提交到数据库,我不确定如何去做,也许某种AJAX调用我的控制器中的方法?虽然我不确定如何实现这一点。

希望问题不是太模糊,只是在真正推动正确的方向之后。

干杯

解决方案:

所以最终解决方案看起来像这样:

ASP.NET MVC 5 CSHTML PAGE

@section scripts{

<script type="text/javascript">
// <![CDATA[
$(document).ready(function () {
    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'

        },
        theme: false,
        defaultView: 'month',
        editable: false,
        events: "/controller/GetEvents/",
        editable: true,
        eventDrop: function (event, delta, revertFunc) {
            var id = event.id;
            var start = event.start;
            $.ajax({
                url: "/controller/FullCalendarEventDrop/",
                type: "POST",
                data: {id: id, start: start}
            });
        }
    });

 });
// ]]></script>

}

控制器:

[HttpPost]
public void FullCalendarEventDrop(int id, string start)
{
    DateTime startDt = DateTime.ParseExact(start, "ddd MMM d hh:mm:ss UTC yyyy", null).ToUniversalTime();


    OBJECT OBJECTNAME = db.OBJECT.Find(id);
    _OBJECTNAME.StartDate = startDt;
    _OBJECTNAME.EndDate = startDt;

    db.Entry(OBJECTNAME).State = EntityState.Modified;
    db.SaveChanges();

}

所以目前还没有错误处理,但我会把它放进去,最重要的是更新工作。

谢谢

:d

2 个答案:

答案 0 :(得分:0)

您可以使用eventDrop回调并通过AJAX将数据传递给控制器​​。

从文档修改......

$('#calendar').fullCalendar({
    events: [
        // events here
    ],
    editable: true,
    eventDrop: function(event, delta, revertFunc) {

        $.ajax({
            url: "/MyController/FullCalendarEventDrop",
            data: event
        });
    }
});

控制器

[HttpPost]
public JsonResult FullCalendarEventDrop(int id, DateTime start, DateTime end)
{
    //Get the event by the id and update its start/end

}

答案 1 :(得分:0)

要扩展Shoe的评论,您可能还想使用&#39; eventResize&#39;如果允许您的用户操纵日期,则会发生此事件。写下你的编辑&#34;通过ajax并通过JSON返回以查看所做的编辑。在你的cal初始化中:

    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay',
        },
        events: '/SampleController/GetEvents',

控制器(编辑后调用)或重新初始化cal load:

    [HttpGet]
    public JsonResult GetEvents()
    {
        var events = _buildSampleData.GetEventList();

        return Json(events, JsonRequestBehavior.AllowGet);
    }

我会在编辑后调用它。