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

引言

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

上篇文章:[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 GO
10 
11 SET ANSI_PADDING ON
12 GO
13 
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] ASC
25 )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 GO
29 
30 SET ANSI_PADDING OFF
31 GO
TB_Schedule
[Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)
 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 GO
10 
11 SET ANSI_PADDING ON
12 GO
13 
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] ASC
28 )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 GO
32 
33 SET ANSI_PADDING OFF
34 GO
TB_UserInfo

日程管理界面

添加

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

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

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

编辑

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

 

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

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

删除

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

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

代码实现

[Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)
  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
[Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)
  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             else
101             {
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                 else
117                 {
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             else
136             {
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                 else
146                 {
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             else
164             {
165                 int intScheduleID = Convert.ToInt32(strScheduleID);
166                 ScheduleBLL scheduleBLL = new ScheduleBLL();
167                 if (scheduleBLL.Delete(intScheduleID))
168                 {
169                     return "1";
170                 }
171                 else
172                 {
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

 

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

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

上一篇:[读书笔记]了不起的node.js+实践(一)


下一篇:ie6 png 透明的解决方法,大网站都在用