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('确实要删除该项吗?')) {
varstart_date = info.event._instance.range.start;//取点击事件所触发的日期,格式为yyyy-MM-dd
varar = event.target.innerText;//点击事件所点击的文本
vareventObj = info.event; //点击事件对象
vareventData;//点击事件通过ajax提交后台的json字符串对象
if(ar) {
eventData = {
title: ar,
start: start_date
};
varstr = 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 boolDelEvent(stringdelevt)
{
JavaScriptSerializerjsonSerializer =new JavaScriptSerializer();
Dutydata_jsondutydata = jsonSerializer.Deserialize<Dutydata>(delevt);
stringstart = _jsondutydata.start.ToString("yyyy-MM-dd");
stringpersonname = _jsondutydata.title;
//DataTable dt = DBHelp.GetDataSet("select userid from users where username='" + title + "'");
//int userid = int.Parse(dt.Rows[0][0].ToString());
intres =DBHelp.ExecuteCommand("delete from dutyplay where dutydate = '"+ start +"' and personname='"+ personname +"'");
if(res > 0)
{
return true;
}
else
{
return false;
}
}