我正在使用ASP.NET MVC解决方案。我的问题是,当我将外部项目放入日历时,我想设置从数据库中获取新记录的ID。因此,我要做的是在fullcalendar的drop事件中,传递记录拖动的数据,然后在服务器端,使用控制器,将信息插入DB中,然后将json传递给成功方法,以将id更新放下的物品。我吓了很多。我找到了创建新事件的解决方案(但我不会这样做)以及其他无效的解决方案。这是我的代码:
JQUERY
drop: function (date, jsEvent) {
var currentRow = $(this);
var Customer = currentRow.find("td:eq(0)").text();
var Sign = currentRow.find("td:eq(1)").text();
var Qta = currentRow.find("td:eq(2)").text();
var rowdata = {
'StartDate': date.format(),
'Customer': Customer,
'Sign': Sign,
'Qta': Qta
}
$.ajax({
type: 'post',
data: rowdata,
async: false,
url: "/Home/SaveEventDrop",
dataType: 'json',
success: function (response) {
NewID = response.id;
},
failure: function (response) {
alert(response.responseText);
},
error: function (response) {
alert(response.responseText);
}
});
$(this).remove();
// HERE IS WHAT I WANT TO DO
this.id = NewID;
}
CONTROLLER
public ActionResult SaveEventDrop(string StartDate, string Customer, string Sign, string Qta)
{
SchedulerCalendar record = new SchedulerCalendar();
//Formating the data
Customer = Customer.Replace(System.Environment.NewLine, "").Trim();
Sign = Sign.Replace(System.Environment.NewLine, "").Trim();
Qta = Qta.Replace(System.Environment.NewLine, "").Trim();
float FloatQta = float.Parse(Qta, CultureInfo.InvariantCulture.NumberFormat);
record.customer = Customer;
record.sign = Sign;
record.qta = FloatQta;
record.startDate = DateTime.Parse(StartDate);
record.endDate = DateTime.Parse(StartDate);
db.schedulerCalendars.Add(record);
db.SaveChanges();
return Json(record);
}
所以如果有人可以让我了解如何在放置函数中获取放置的元素以及如何更新id,我将非常感谢他!
谢谢
答案 0 :(得分:0)
我为iusse找到了可行的解决方案,希望对其他人有所帮助。从共享代码开始,我将json返回的ID保存到“ localStorage”变量中,因此我的AJAX成功功能将是:
success: function (response) {
localStorage.setItem("NewID", response.id);
},
此后,我发现在删除之后触发了函数“ eventRecived”。在这里,您具有放置项的元素,我在这里设置了新ID:
eventReceive: function (event) {
event.id = localStorage.getItem("NewID");
},
如果有人有更好的解决方案,我将不胜感激。目前,此解决方案对我有用。
答案 1 :(得分:0)
对于其他可能遇到的问题。如果您负担得起再次调用服务器的费用,则只需重新加载所有事件即可。我知道,不理想,但也许更简单。
success: function (response) {
calendar.removeAllEvents();
calendar.refetchEvents();
},