首页 > 代码库 > [Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)

[Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)

引言

出差终于回来了,这篇文章算是这个月的博客的开篇吧。

上篇文章:[Asp.net]Calendar+JqueryUi实现日程管理——添加日程

上篇文章主要贴了一些该项目的界面,这里面,将主要代码也贴出来分享一下。

项目

数据库设计

 1 USE [Wolfy.Schedule] 2 GO 3  4 /****** Object:  Table [dbo].[TB_Schedule]    Script Date: 2014/7/5 16:30:00 ******/ 5 SET ANSI_NULLS ON 6 GO 7  8 SET QUOTED_IDENTIFIER ON 9 GO10 11 SET ANSI_PADDING ON12 GO13 14 CREATE TABLE [dbo].[TB_Schedule](15     [scheduleId] [int] IDENTITY(1,1) NOT NULL,16     [scheduleDescription] [nvarchar](320) NULL,17     [scheduleCreateDate] [datetime] NULL,18     [scheduleColor] [varchar](32) NULL,19     [scheduleTitle] [nvarchar](160) NULL,20     [userId] [int] NOT NULL,21     [schedulePlanDate] [datetime] NULL,22  CONSTRAINT [PK_TB_Schedule] PRIMARY KEY CLUSTERED 23 (24     [scheduleId] ASC25 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]26 ) ON [PRIMARY]27 28 GO29 30 SET ANSI_PADDING OFF31 GO
TB_Schedule
 1 USE [Wolfy.Schedule] 2 GO 3  4 /****** Object:  Table [dbo].[TB_UserInfo]    Script Date: 2014/7/5 16:30:22 ******/ 5 SET ANSI_NULLS ON 6 GO 7  8 SET QUOTED_IDENTIFIER ON 9 GO10 11 SET ANSI_PADDING ON12 GO13 14 CREATE TABLE [dbo].[TB_UserInfo](15     [userId] [int] IDENTITY(1,1) NOT NULL,16     [userName] [nvarchar](20) NULL,17     [userGender] [bit] NULL,18     [userLoginName] [varchar](32) NULL,19     [userPwd] [varchar](32) NULL,20     [userCreateDate] [datetime] NULL,21     [userIsDelete] [bit] NULL,22     [userBirthday] [datetime] NULL,23     [userLoginCount] [int] NULL,24     [userAge] [int] NULL,25  CONSTRAINT [PK_TB_UserInfo] PRIMARY KEY CLUSTERED 26 (27     [userId] ASC28 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]29 ) ON [PRIMARY]30 31 GO32 33 SET ANSI_PADDING OFF34 GO
TB_UserInfo

日程管理界面

添加

编辑

 

删除

代码实现

  1 <%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Main.Master" CodeBehind="ScheduleManage.aspx.cs" Inherits="Wolfy.ScheduleDemo.ScheduleManage" %>  2   3 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">  4     <link href="js/Dialog/css/redmond/jquery-ui-1.10.4.custom.css" rel="stylesheet" />  5     <script type="text/javascript" src="js/jquery-1.11.0.js"></script>  6     <script type="text/javascript" src="js/Dialog/js/jquery-ui-1.10.4.custom.js"></script>  7     <script type="text/javascript" src="js/jquery.contextmenu.r2.packed.js"></script>  8     <script type="text/javascript">  9         $(function () { 10  11             $("#dialog").dialog({ 12                 autoOpen: false,// 初始化之后,是否立即显示对话框,默认为 true 13                 width: 450, 14                 modal: true,//是否模式对话框,默认为 false 15                 draggable: true,//是否允许拖动,默认为 true 16                 resizable: true,//是否可以调整对话框的大小,默认为 true 17                 title: "添加日程", 18                 position: "center",//用来设置对话框的位置,有三种设置方法 1.  一个字符串,允许的值为  ‘center‘, ‘left‘, ‘right‘, ‘top‘, ‘bottom‘.  此属性的默认值即为 ‘center‘,表示对话框居中。 2.  一个数组,包含两个以像素为单位的位置,例如, var dialogOpts = { position: [100, 100] }; 3. 一个字符串组成的数组,例如, [‘right‘,‘top‘],表示对话框将会位于窗口的右上角。var dialogOpts = {  position: ["left", "bottom"]    }; 19  20             }); 21  22             $("#btnSave").click(function () { 23                 var strScheduleTitle = $("#<%=txtScheduleTitle.ClientID%>").val(); 24                 var strScheduleDescription = $("#<%=txtScheduleDescription.ClientID%>").val(); 25                 var strhdColor = $("#<%=hdColor.ClientID%>").val(); 26                 var strlblSchedulePlanDate = $("#<%=lblSchedulePlanDate.ClientID%>").html(); 27                 var strScheduleID = $("#<%=hdScheduleID.ClientID%>").val();       28                 29             30                 $.ajax({ 31                     type: "POST",// 32                     url: "ScheduleManage.aspx/AddSchedule", 33                     data: "{strScheduleTitle:‘" + strScheduleTitle + "‘,strScheduleDescription:‘" + strScheduleDescription + "‘,strhdColor:‘" + strhdColor + "‘,strlblSchedulePlanDate:‘" + strlblSchedulePlanDate + "‘,strScheduleID:‘" + strScheduleID + "‘}", 34                     contentType: "application/json", 35                     dataType: "json", 36                     success: function (data) { 37                         $("#dialog").dialog("close"); 38                         if (data.d == 1) { 39  40                             alert("添加成功") 41                         } else if (data.d == 2) { 42                             alert("添加失败"); 43                         } else if (data.d == 3) { 44                             alert("修改成功"); 45                         } else { 46                             alert("修改失败"); 47                         } 48                         window.location = window.location; 49                     }, 50                     error: function (msg) { 51                         alert(msg.status); 52                     } 53                 }); 54             }); 55             // 打开日程添加窗口 56             $("td[date]").each(function () { 57  58                 //为每个单元格绑定右键菜单 59                 $(this).contextMenu(myMenu1, { 60                     //绑定右键菜单,通过ul,li的ID绑定 61                     bindings: 62                     { 63                         add: function (e) { 64  65                             $("#<%=lblSchedulePlanDate.ClientID%>").text($("#" + e.id).attr("date")); 66                             $("#<%=txtScheduleTitle.ClientID%>").val(""); 67                             $("#<%=txtScheduleDescription.ClientID%>").val(""); 68                             $("#btnSave").val("添加"); 69                             $("#dialog").dialog("open"); 70                         }, 71                         edit: function (e) { 72                             var strScheduleID = $("#" + e.id).attr("scheduleId"); 73                             if (strScheduleID == "NO") { 74                                 alert("亲,该日没有日程安排,无法编辑,谢谢!"); 75                                 return; 76                             } else { 77                                 $("#<%=hdScheduleID.ClientID%>").val(strScheduleID); 78                             } 79                             $("#btnSave").val("编辑"); 80                              81                             $.ajax({ 82                                 type: "POST",// 83                                 url: "ScheduleManage.aspx/EditSchedule", 84                                 data: "{strScheduleID:‘" + strScheduleID + "‘}", 85                                 contentType: "application/json", 86                                 dataType: "json", 87                                 success: function (data) { 88                                     $("#<%=txtScheduleTitle.ClientID%>").val(data.d[1]); 89                                     $("#<%=txtScheduleDescription.ClientID%>").val(data.d[1]); 90                                      91                                     $("#<%=hdColor.ClientID%>").val(data.d[4]); 92                                     $("#" + data.d[4]).text(""); 93                                     $("#" + data.d[4]).siblings().text(""); 94                                      95                                     $("#<%=lblSchedulePlanDate.ClientID%>").html(data.d[5]); 96  97                                 }, 98                                 error: function (msg) { 99                                     alert(msg.status);100                                 }101                             });                           102                             $("#dialog").dialog("open");103                         },104                         delete: function (e) {105                             var strScheduleID = $("#" + e.id).attr("scheduleId");106 107                             if (strScheduleID == "NO") {108                                 alert("亲,该日没有日程安排,无法删除,谢谢!");109                                 return;110                             }111 112                             $.ajax({113                                 type: "POST",//114                                 url: "ScheduleManage.aspx/DeleteSchedule",115                                 data: "{strScheduleID:‘" + strScheduleID + "‘}",116                                 contentType: "application/json",117                                 dataType: "json",118                                 success: function (data) {119                                     if (data.d == 1) {120                                         $("#dialog").dialog("close");121                                         alert("删除成功");122 123                                     } else {124                                         alert("删除失败");125                                     }126                                     window.location = window.location;127                                 },128                                 error: function (msg) {129                                     alert(msg.status);130                                 }131                             });132                         }133                     }134                 });135 136             });137             $("#btnCancel").click(function () {138                 $("#dialog").dialog("close");139             });140             $("#tbColor tr td").each(function () {141                 $(this).click(function () {142                     $(this).text("");143                     $("#<%=hdColor.ClientID%>").val($(this).css("background-color"));144                     $(this).siblings().text("");145                 });146             });147         });148     </script>149 150 </asp:Content>151 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">152     <asp:Calendar ID="CalendarSchedule" runat="server"153         BorderColor="#FFCC66" NextPrevStyle-Height="10px" Height="500px" Width="100%" BackColor="#FFFFCC" BorderWidth="1px" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt" ForeColor="#663399" OnDayRender="CalendarSchedule_DayRender" ShowGridLines="True" OnSelectionChanged="CalendarSchedule_SelectionChanged" OnVisibleMonthChanged="CalendarSchedule_VisibleMonthChanged">154         <DayHeaderStyle BackColor="#FFCC66" Font-Bold="True" Height="1px" />155         <NextPrevStyle Height="10px" Font-Size="9pt" ForeColor="#FFFFCC"></NextPrevStyle>156         <OtherMonthDayStyle ForeColor="#CC9966" />157         <SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" />158         <SelectorStyle BackColor="#FFCC66" />159         <TitleStyle BackColor="#990000" Height="50px" Font-Bold="True" Font-Size="9pt" ForeColor="#FFFFCC" />160         <TodayDayStyle BackColor="#FFCC66" ForeColor="White" />161     </asp:Calendar>162     <div style="display: none" id="dialog">163         <table class="insert-tab" width="100%">164             <tbody>165                 <tr>166                     <th width="120"><i class="require-red">*</i>日程标题:</th>167                     <td>168                         <asp:TextBox ID="txtScheduleTitle" CssClass="common-text required" runat="server"></asp:TextBox>169                     </td>170                 </tr>171                 <tr>172                     <th>日程描述:</th>173                     <td>174                         <asp:TextBox ID="txtScheduleDescription" TextMode="MultiLine" CssClass="common-textarea" cols="30" Style="width: 98%;" Rows="5" runat="server"></asp:TextBox>175                     </td>176                 </tr>177                 <tr>178                     <th>日程创建时间:</th>179                     <td>180                         <asp:Literal Text="" ID="ltlScheduleCreateDate" runat="server" /></td>181                 </tr>182                 <tr>183                     <th><i class="require-red">*</i>日程颜色标识:</th>184                     <td>185                         <table id="tbColor" width="100%" border="1" style="height: 30px;">186                             <tr align="center">187                                 <td id="red" style="background-color: red"></td>188                                 <td id="yellow" style="background-color: yellow"></td>189                                 <td id="green" style="background-color: green"></td>190                                 <td id="blue" style="background-color: blue"></td>191                             </tr>192                         </table>193                     </td>194                 </tr>195                 <tr>196                     <th>计划时间:</th>197                     <td>198                         <asp:Label Text="" ID="lblSchedulePlanDate" runat="server" />199                     </td>200                 </tr>201                 <tr align="center">202                     <th></th>203                     <td>204                         <input type="button" id="btnSave" class="btn btn-primary btn6 mr10" name="name" value="添加" />205                         <input type="button" id="btnCancel" class="btn btn6" name="name" value="取消" />206                     </td>207                 </tr>208 209             </tbody>210         </table>211         <asp:HiddenField runat="server" ID="hdColor" Value="red" />212         <asp:HiddenField runat="server" ID="hdScheduleID" Value="NO" />213 214     </div>215     <div class="contextMenu" id="myMenu1">216         <ul>217             <li id="add">添加</li>218             <li id="edit">编辑</li>219             <li id="delete">删除</li>220         </ul>221     </div>222 223 </asp:Content>
ScheduleManage.aspx
  1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Web;  6 using System.Web.Services;  7 using System.Web.UI;  8 using System.Web.UI.WebControls;  9 using Wolfy.Schedule.BLL; 10 using Wolfy.Schedule.Model; 11 namespace Wolfy.ScheduleDemo 12 { 13     public partial class ScheduleManage : PageBase 14     { 15         private static Schedule.Model.UserInfo _userInfo = null; 16         Schedule.BLL.ScheduleBLL _scheduleBLL = new ScheduleBLL(); 17         IList<Schedule.Model.Schedule> _lstSchedules = null; 18         DateTime dtCurrentDate = DateTime.Now; //当前 19         DateTime dtPriviousDate = DateTime.Now.AddMonths(-1); //上一个月 20         protected void Page_Load(object sender, EventArgs e) 21         { 22             if (!IsPostBack) 23             { 24  25                 _userInfo = Session["user"] as UserInfo; 26                 this.ltlScheduleCreateDate.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); 27                 this.CalendarSchedule.SelectedDate = DateTime.Now; 28             } 29  30             _lstSchedules = _scheduleBLL.GetModelList(" userid=" + _userInfo.userId + " and SchedulePlanDate>=‘" + dtPriviousDate.AddDays(-10) + "‘ and SchedulePlanDate <=‘" + dtCurrentDate.AddDays(30) + ""); 31         } 32         /// <summary> 33         /// 初始化日历 34         /// </summary> 35         /// <param name="sender"></param> 36         /// <param name="e"></param> 37         protected void CalendarSchedule_DayRender(object sender, DayRenderEventArgs e) 38         { 39  40             e.Cell.Attributes.Add("date", e.Day.Date.ToString("yyyy-MM-dd")); 41             e.Cell.Attributes.Add("id", "td" + e.Day.Date.ToString("MMdd")); 42             e.Cell.Attributes.Add("scheduleId", "NO"); 43             if (_lstSchedules != null && _lstSchedules.Count > 0) 44             { 45                  46                 foreach (Schedule.Model.Schedule schedule in _lstSchedules) 47                 { 48                     if (e.Day.Date.ToString("yyyy-MM-dd").Equals(schedule.SchedulePlanDate.ToString("yyyy-MM-dd"))) 49                     { 50                         e.Cell.Style.Add("background-color", schedule.scheduleColor); 51                         e.Cell.Attributes.Add("scheduleId", schedule.scheduleId.ToString()); 52                         e.Cell.Text = schedule.scheduleTitle + "<br/>" + schedule.scheduleDescription; 53                         e.Cell.Font.Bold = true; 54                         e.Cell.Font.Size = FontUnit.Smaller; 55                     } 56                 } 57             } 58  59  60  61         } 62  63         protected void CalendarSchedule_SelectionChanged(object sender, EventArgs e) 64         { 65  66  67  68         } 69         /// <summary> 70         /// 添加日程 71         /// </summary> 72         /// <param name="strScheduleTitle">日程标题</param> 73         /// <param name="strScheduleDescription">日程描述</param> 74         /// <param name="strhdColor">标识颜色</param> 75         /// <param name="strlblSchedulePlanDate">计划时间</param> 76         /// <returns>1:成功,2:失败</returns> 77         [WebMethod] 78         public static string AddSchedule(string strScheduleTitle, string strScheduleDescription, string strhdColor, string strlblSchedulePlanDate, string strScheduleID) 79         { 80             //添加 81             if (strScheduleID == "NO") 82             { 83                 Schedule.Model.Schedule schedule = new Schedule.Model.Schedule(); 84                 schedule.scheduleCreateDate = DateTime.Now; 85                 schedule.scheduleColor = strhdColor; 86                 schedule.scheduleDescription = strScheduleDescription; 87                 schedule.SchedulePlanDate = Convert.ToDateTime(strlblSchedulePlanDate); 88                 schedule.scheduleTitle = strScheduleTitle; 89                 schedule.userId = _userInfo.userId; 90                 ScheduleBLL scheduleBLL = new ScheduleBLL(); 91                 if (scheduleBLL.Add(schedule)) 92                 { 93                     return "1"; 94                 } 95                 else 96                 { 97                     return "2"; 98                 } 99             }100             else101             {102                 //编辑103                 Schedule.Model.Schedule schedule = new Schedule.Model.Schedule();104                 schedule.scheduleId = Convert.ToInt32(strScheduleID);105                 schedule.scheduleCreateDate = DateTime.Now;106                 schedule.scheduleColor = strhdColor;107                 schedule.scheduleDescription = strScheduleDescription;108                 schedule.SchedulePlanDate = Convert.ToDateTime(strlblSchedulePlanDate);109                 schedule.scheduleTitle = strScheduleTitle;110                 schedule.userId = _userInfo.userId;111                 ScheduleBLL scheduleBLL = new ScheduleBLL();112                 if (scheduleBLL.Update(schedule))113                 {114                     return "3";115                 }116                 else117                 {118                     return "4";119                 }120             }121 122         }123         /// <summary>124         /// 编辑日程125         /// </summary>126         /// <param name="shecduleID">日程id</param>127         /// <returns></returns>128         [WebMethod]129         public static string[] EditSchedule(string strScheduleID)130         {131             if (string.IsNullOrEmpty(strScheduleID))132             {133                 return new string[0];134             }135             else136             {137                 int intScheduleID = Convert.ToInt32(strScheduleID);138                 ScheduleBLL scheduleBLL = new ScheduleBLL();139                 IList<Schedule.Model.Schedule> lstSchedules = scheduleBLL.GetModelList(" userid=" + _userInfo.userId + " and scheduleId=" + intScheduleID + "");140                 if (lstSchedules.Count > 0)141                 {142                     Schedule.Model.Schedule schedule = lstSchedules[0];143                     return new string[] { schedule.scheduleId.ToString(), schedule.scheduleTitle, schedule.scheduleDescription, Convert.ToDateTime(schedule.scheduleCreateDate).ToString("yyyy-MM-dd hh:mm:ss"), schedule.scheduleColor, schedule.SchedulePlanDate.ToString("yyyy-MM-dd") };144                 }145                 else146                 {147                     return new string[0];148                 }149             }150         }151         /// <summary>152         /// 删除日程153         /// </summary>154         /// <param name="secheduleID">日程id</param>155         /// <returns></returns>156         [WebMethod]157         public static string DeleteSchedule(string strScheduleID)158         {159             if (string.IsNullOrEmpty(strScheduleID))160             {161                 return "0";162             }163             else164             {165                 int intScheduleID = Convert.ToInt32(strScheduleID);166                 ScheduleBLL scheduleBLL = new ScheduleBLL();167                 if (scheduleBLL.Delete(intScheduleID))168                 {169                     return "1";170                 }171                 else172                 {173                     return "0";174                 }175             }176         }177         /// <summary>178         /// 月改变时触发的事件179         /// </summary>180         /// <param name="sender"></param>181         /// <param name="e"></param>182         protected void CalendarSchedule_VisibleMonthChanged(object sender, MonthChangedEventArgs e)183         {184             dtCurrentDate = e.NewDate;185             dtPriviousDate = e.PreviousDate;186             _lstSchedules = _scheduleBLL.GetModelList(" userid=" + _userInfo.userId + " and SchedulePlanDate>=‘" + dtPriviousDate.AddDays(-10) + "‘ and SchedulePlanDate <=‘" + dtCurrentDate.AddDays(30) + "");187         }188     }189 }
ScheduleManage.aspx.cs

总结

这里只是实现了功能的业务逻辑,很多细节没有考虑到,也没采用form验证或者windows验证,就拿那个代码写着顺手就采用哪种方式来写了。数据库设计也没考虑范式要求,就把能想到的都列出来了,业务逻辑清楚了,添加其他的字段就不难了。这里也把项目分享一下,有需要的可以下载,如果觉得不错,不妨推荐一下。

项目下载:链接:http://pan.baidu.com/s/1qWwgYJy 密码:2qx0