lundi 2 février 2015

jquery FullCalendar - items being duplicated


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: duplication of events


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