我试图从我的数据库中删除超过30天的事件。我不想使用removeEvents,因为它只删除事件的呈现而不是数据库。或者我错了吗?
由于fullCalendar中没有deleteEvents函数,我不能像这样调用日历中的事件:示例:event.start.format()
查找事件的开始日期,以便计算是否超过30天删除它。
我尝试制作一个自定义函数并将其添加到fullCalendar,如下所示:
//-------------- DELETE EVENTS OUDER DAN 30 DAGEN--------------
deleteEvents: function(event, start, end){
var form = $('#__AjaxAntiForgeryForm');
var token = $('input[name="__RequestVerificationToken"]', form).val();
var startDate = event.start.format("YYYY-MM-DD");
var diff = newDate(Date.parse(start) - Date.parse(currentDate)); //start - current returns difference in milliseconds
var days = diff / 1000 / 60 / 60 / 24; //get days
if (days => 30) {
$.ajax({
type: "post",
url: "@Url.Action("Delete","medewerker_melding")", //send to Action, Controller
ajaxasync: true,
data: {
id: event.id, //ID of event that needs to be deleted
__RequestVerificationToken: token //ValidateAntiForgeryToken
},
success: function () {
// redirect
window.location.replace('@Url.Action("Index", "medewerker_melding")');
},
error: function (data) {
alert("Fout: verouderde events niet kunnen verwijderen.\nError: " + data);
}
});
}
}
但是fullCalendar只是忽略了它,因为它在jQuery fullCalendar中不存在。我意识到这个脚本无论如何都不会有用,但除此之外。
所以我希望有更多jQuery fullCalendar和jQuery经验的人知道从$(document).ready
数据库中删除超过30天的事件的方法。
谢谢。
在与@ ADyson交谈并且对我的代码发誓之后,我终于解决了它
public void DeleteOldEvents()
{
temphrmEntities db = new temphrmEntities();
var datecheck = DateTime.Now.AddMonths(-1);
var q = from n in db.medewerker_melding
where n.datum_van < datecheck
group n by n.ID into g
select g.OrderByDescending(t => t.ID).FirstOrDefault();
foreach (var ev in q)
{
db.medewerker_melding.Remove(ev);
}
db.SaveChanges();
}
public ActionResult Index()
{
DeleteOldEvents();
return View();
}
谢谢@ADyson