I asked this question about a month ago and got my answer:
jquery FullCalendar using MVC and JSON
However, now I am seeing duplicates when I switch between months:
My javaScript code is:
var source = '../calendar/PostCalendarData';
$(document).ready(function () {
var events = [];
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
$.ajax({
url: source,
type: 'POST',
data: {
custom_param1: '',
custom_param2: ''
},
success: function (doc) {
$.each(doc, function (index, element) {
events.push(element);
});
callback(events);
}
});
}
});
});
I'm populating the calendar using a stored procedure (located here: ../calendar/PostCalendar).
Is there something I need to do to clear out the calendar for each month?
I'm including the PostCalendar method here:
[HttpPost]
public ActionResult PostCalendarData()
{
SqlParameter param1 = new SqlParameter("@filterValue", "");
var calAssignments = db.Database.SqlQuery<calendarAssignment>(
"exec getCalendarInfo_v2 @filterValue ", param1).ToList<calendarAssignment>();
List<calendarEvent> calEvents = new List<calendarEvent>();
foreach (calendarAssignment item in calAssignments)
{
string[] splitDates = item.futureDates.Split(',');
foreach(string s in splitDates)
{
calendarEvent calEvent = new calendarEvent();
calEvent.title = item.name + " : " + item.chore;
calEvent.description = item.chore;
DateTime _futureDate;
_futureDate = DateTime.Parse(s);
calEvent.start = _futureDate.ToString("yyyy-MM-dd");
calEvents.Add(calEvent);
}
}
SqlParameter paramDaily = new SqlParameter("@filterValue", "daily");
var calAssignmentsDaily = db.Database.SqlQuery<calendarAssignment>(
"exec getCalendarInfo @filterValue ", paramDaily).ToList<calendarAssignment>();
foreach (calendarAssignment item in calAssignmentsDaily)
{
string[] splitDates = item.futureDates.Split(',');
foreach (string s in splitDates)
{
calendarEvent calEvent = new calendarEvent();
calEvent.title = item.name + " : " + item.chore;
calEvent.description = item.chore;
DateTime _futureDate;
_futureDate = DateTime.Parse(s);
calEvent.start = _futureDate.ToString("yyyy-MM-dd");
calEvents.Add(calEvent);
}
}
return Json(calEvents);
}
I have also verified that calEvents in the C# code always returns the same number. So it appears that it is specifically related to the javascript calendar.
Aucun commentaire:
Enregistrer un commentaire