FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(四)
(四)c# asp.net 操作FullCalendarDemo5 点击删除
这一步实现点击日历中的值班员名称,弹出删除确认,确认删除后,异步在数据库中删除对应的值班员记录,删除后返回界面,在点击的当日日期上清楚该值班员。因为使用了异步,因此界面不会有刷新的不适。
在FullCalendar官方网页查询对应的事件,或者打开官方的demo,找到对应的事件,因为版本的不同,事件名称也由轻微的变化。FullCalendar 5.11单击事件调用的是eventClick。
在index.aspx代码页,页面<body>部分不变,对<script>部分进行更新。老版本中,直接指定eventClick:function(event){}即可,但新版的事件调用方法变化很大。原创不易,转载注明蓝海云梦,FullCalendar v5.11.2 版本的调用方法如下:
eventClick: function (info) {
if (confirm('确实要删除该项吗?')) {
var start_date = info.event._instance.range.start;// 取点击事件所触发的日期,格式为yyyy-MM-dd
var ar = event.target.innerText;//点击事件所点击的文本
var eventObj = info.event; //点击事件对象
var eventData;//点击事件通过ajax提交后台的json字符串对象
if (ar) {
eventData = {
title: ar,
start: start_date
};
var str = JSON.stringify(eventData);//转换成JSON字符串
$.ajax({
contentType: "application/json",
type: "post",
datatype: "json",
url: "index.aspx/DelEvent",//提交后台DelEvent方法
data: "{'delevt':'" + str + "'}",
success: function (msg) {
eventObj.remove();//在fullcalendar上移除内容对象
},
error: function (x) {
alert("失败" + x);
}
});
}
}
},
在index.aspx.cs代码页,DelEvent()方法内容如下:
[WebMethod]
public static bool DelEvent(string delevt)
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
Dutydata _jsondutydata = jsonSerializer.Deserialize<Dutydata>(delevt);
string start = _jsondutydata.start.ToString("yyyy-MM-dd");
string personname = _jsondutydata.title;
//DataTable dt = DBHelp.GetDataSet("select userid from users where username='" + title + "'");
//int userid = int.Parse(dt.Rows[0][0].ToString());
int res = DBHelp.ExecuteCommand("delete from dutyplay where dutydate = '" + start + "' and personname='" + personname + "'");
if (res > 0)
{
return true;
}
else
{
return false;
}
}