引言

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

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

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

项目

数据库设计

 USE [Wolfy.Schedule]
GO /****** Object: Table [dbo].[TB_Schedule] Script Date: 2014/7/5 16:30:00 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO SET ANSI_PADDING ON
GO CREATE TABLE [dbo].[TB_Schedule](
[scheduleId] [int] IDENTITY(1,1) NOT NULL,
[scheduleDescription] [nvarchar](320) NULL,
[scheduleCreateDate] [datetime] NULL,
[scheduleColor] [varchar](32) NULL,
[scheduleTitle] [nvarchar](160) NULL,
[userId] [int] NOT NULL,
[schedulePlanDate] [datetime] NULL,
CONSTRAINT [PK_TB_Schedule] PRIMARY KEY CLUSTERED
(
[scheduleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO SET ANSI_PADDING OFF
GO

TB_Schedule

 USE [Wolfy.Schedule]
GO /****** Object: Table [dbo].[TB_UserInfo] Script Date: 2014/7/5 16:30:22 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO SET ANSI_PADDING ON
GO CREATE TABLE [dbo].[TB_UserInfo](
[userId] [int] IDENTITY(1,1) NOT NULL,
[userName] [nvarchar](20) NULL,
[userGender] [bit] NULL,
[userLoginName] [varchar](32) NULL,
[userPwd] [varchar](32) NULL,
[userCreateDate] [datetime] NULL,
[userIsDelete] [bit] NULL,
[userBirthday] [datetime] NULL,
[userLoginCount] [int] NULL,
[userAge] [int] NULL,
CONSTRAINT [PK_TB_UserInfo] PRIMARY KEY CLUSTERED
(
[userId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] GO SET ANSI_PADDING OFF
GO

TB_UserInfo

日程管理界面

添加

编辑

删除

代码实现

 <%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Main.Master" CodeBehind="ScheduleManage.aspx.cs" Inherits="Wolfy.ScheduleDemo.ScheduleManage" %>

 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<link href="js/Dialog/css/redmond/jquery-ui-1.10.4.custom.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script type="text/javascript" src="js/Dialog/js/jquery-ui-1.10.4.custom.js"></script>
<script type="text/javascript" src="js/jquery.contextmenu.r2.packed.js"></script>
<script type="text/javascript">
$(function () { $("#dialog").dialog({
autoOpen: false,// 初始化之后,是否立即显示对话框,默认为 true
width: 450,
modal: true,//是否模式对话框,默认为 false
draggable: true,//是否允许拖动,默认为 true
resizable: true,//是否可以调整对话框的大小,默认为 true
title: "添加日程",
position: "center",//用来设置对话框的位置,有三种设置方法 1. 一个字符串,允许的值为 'center', 'left', 'right', 'top', 'bottom'. 此属性的默认值即为 'center',表示对话框居中。 2. 一个数组,包含两个以像素为单位的位置,例如, var dialogOpts = { position: [100, 100] }; 3. 一个字符串组成的数组,例如, ['right','top'],表示对话框将会位于窗口的右上角。var dialogOpts = { position: ["left", "bottom"] }; }); $("#btnSave").click(function () {
var strScheduleTitle = $("#<%=txtScheduleTitle.ClientID%>").val();
var strScheduleDescription = $("#<%=txtScheduleDescription.ClientID%>").val();
var strhdColor = $("#<%=hdColor.ClientID%>").val();
var strlblSchedulePlanDate = $("#<%=lblSchedulePlanDate.ClientID%>").html();
var strScheduleID = $("#<%=hdScheduleID.ClientID%>").val(); $.ajax({
type: "POST",//
url: "ScheduleManage.aspx/AddSchedule",
data: "{strScheduleTitle:'" + strScheduleTitle + "',strScheduleDescription:'" + strScheduleDescription + "',strhdColor:'" + strhdColor + "',strlblSchedulePlanDate:'" + strlblSchedulePlanDate + "',strScheduleID:'" + strScheduleID + "'}",
contentType: "application/json",
dataType: "json",
success: function (data) {
$("#dialog").dialog("close");
if (data.d == 1) { alert("添加成功")
} else if (data.d == 2) {
alert("添加失败");
} else if (data.d == 3) {
alert("修改成功");
} else {
alert("修改失败");
}
window.location = window.location;
},
error: function (msg) {
alert(msg.status);
}
});
});
// 打开日程添加窗口
$("td[date]").each(function () { //为每个单元格绑定右键菜单
$(this).contextMenu('myMenu1', {
//绑定右键菜单,通过ul,li的ID绑定
bindings:
{
'add': function (e) { $("#<%=lblSchedulePlanDate.ClientID%>").text($("#" + e.id).attr("date"));
$("#<%=txtScheduleTitle.ClientID%>").val("");
$("#<%=txtScheduleDescription.ClientID%>").val("");
$("#btnSave").val("添加");
$("#dialog").dialog("open");
},
'edit': function (e) {
var strScheduleID = $("#" + e.id).attr("scheduleId");
if (strScheduleID == "NO") {
alert("亲,该日没有日程安排,无法编辑,谢谢!");
return;
} else {
$("#<%=hdScheduleID.ClientID%>").val(strScheduleID);
}
$("#btnSave").val("编辑"); $.ajax({
type: "POST",//
url: "ScheduleManage.aspx/EditSchedule",
data: "{strScheduleID:'" + strScheduleID + "'}",
contentType: "application/json",
dataType: "json",
success: function (data) {
$("#<%=txtScheduleTitle.ClientID%>").val(data.d[1]);
$("#<%=txtScheduleDescription.ClientID%>").val(data.d[1]); $("#<%=hdColor.ClientID%>").val(data.d[4]);
$("#" + data.d[4]).text("√");
$("#" + data.d[4]).siblings().text(""); $("#<%=lblSchedulePlanDate.ClientID%>").html(data.d[5]); },
error: function (msg) {
alert(msg.status);
}
});
$("#dialog").dialog("open");
},
'delete': function (e) {
var strScheduleID = $("#" + e.id).attr("scheduleId"); if (strScheduleID == "NO") {
alert("亲,该日没有日程安排,无法删除,谢谢!");
return;
} $.ajax({
type: "POST",//
url: "ScheduleManage.aspx/DeleteSchedule",
data: "{strScheduleID:'" + strScheduleID + "'}",
contentType: "application/json",
dataType: "json",
success: function (data) {
if (data.d == 1) {
$("#dialog").dialog("close");
alert("删除成功"); } else {
alert("删除失败");
}
window.location = window.location;
},
error: function (msg) {
alert(msg.status);
}
});
}
}
}); });
$("#btnCancel").click(function () {
$("#dialog").dialog("close");
});
$("#tbColor tr td").each(function () {
$(this).click(function () {
$(this).text("√");
$("#<%=hdColor.ClientID%>").val($(this).css("background-color"));
$(this).siblings().text("");
});
});
});
</script> </asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:Calendar ID="CalendarSchedule" runat="server"
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">
<DayHeaderStyle BackColor="#FFCC66" Font-Bold="True" Height="1px" />
<NextPrevStyle Height="10px" Font-Size="9pt" ForeColor="#FFFFCC"></NextPrevStyle>
<OtherMonthDayStyle ForeColor="#CC9966" />
<SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" />
<SelectorStyle BackColor="#FFCC66" />
<TitleStyle BackColor="#990000" Height="50px" Font-Bold="True" Font-Size="9pt" ForeColor="#FFFFCC" />
<TodayDayStyle BackColor="#FFCC66" ForeColor="White" />
</asp:Calendar>
<div style="display: none" id="dialog">
<table class="insert-tab" width="100%">
<tbody>
<tr>
<th width="120"><i class="require-red">*</i>日程标题:</th>
<td>
<asp:TextBox ID="txtScheduleTitle" CssClass="common-text required" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<th>日程描述:</th>
<td>
<asp:TextBox ID="txtScheduleDescription" TextMode="MultiLine" CssClass="common-textarea" cols="30" Style="width: 98%;" Rows="5" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<th>日程创建时间:</th>
<td>
<asp:Literal Text="" ID="ltlScheduleCreateDate" runat="server" /></td>
</tr>
<tr>
<th><i class="require-red">*</i>日程颜色标识:</th>
<td>
<table id="tbColor" width="100%" border="1" style="height: 30px;">
<tr align="center">
<td id="red" style="background-color: red">√</td>
<td id="yellow" style="background-color: yellow"></td>
<td id="green" style="background-color: green"></td>
<td id="blue" style="background-color: blue"></td>
</tr>
</table>
</td>
</tr>
<tr>
<th>计划时间:</th>
<td>
<asp:Label Text="" ID="lblSchedulePlanDate" runat="server" />
</td>
</tr>
<tr align="center">
<th></th>
<td>
<input type="button" id="btnSave" class="btn btn-primary btn6 mr10" name="name" value="添加" />
<input type="button" id="btnCancel" class="btn btn6" name="name" value="取消" />
</td>
</tr> </tbody>
</table>
<asp:HiddenField runat="server" ID="hdColor" Value="red" />
<asp:HiddenField runat="server" ID="hdScheduleID" Value="NO" /> </div>
<div class="contextMenu" id="myMenu1">
<ul>
<li id="add">添加</li>
<li id="edit">编辑</li>
<li id="delete">删除</li>
</ul>
</div> </asp:Content>

ScheduleManage.aspx

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using Wolfy.Schedule.BLL;
using Wolfy.Schedule.Model;
namespace Wolfy.ScheduleDemo
{
public partial class ScheduleManage : PageBase
{
private static Schedule.Model.UserInfo _userInfo = null;
Schedule.BLL.ScheduleBLL _scheduleBLL = new ScheduleBLL();
IList<Schedule.Model.Schedule> _lstSchedules = null;
DateTime dtCurrentDate = DateTime.Now; //当前
DateTime dtPriviousDate = DateTime.Now.AddMonths(-); //上一个月
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ _userInfo = Session["user"] as UserInfo;
this.ltlScheduleCreateDate.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
this.CalendarSchedule.SelectedDate = DateTime.Now;
} _lstSchedules = _scheduleBLL.GetModelList(" userid=" + _userInfo.userId + " and SchedulePlanDate>='" + dtPriviousDate.AddDays(-) + "' and SchedulePlanDate <='" + dtCurrentDate.AddDays() + "'");
}
/// <summary>
/// 初始化日历
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CalendarSchedule_DayRender(object sender, DayRenderEventArgs e)
{ e.Cell.Attributes.Add("date", e.Day.Date.ToString("yyyy-MM-dd"));
e.Cell.Attributes.Add("id", "td" + e.Day.Date.ToString("MMdd"));
e.Cell.Attributes.Add("scheduleId", "NO");
if (_lstSchedules != null && _lstSchedules.Count > )
{ foreach (Schedule.Model.Schedule schedule in _lstSchedules)
{
if (e.Day.Date.ToString("yyyy-MM-dd").Equals(schedule.SchedulePlanDate.ToString("yyyy-MM-dd")))
{
e.Cell.Style.Add("background-color", schedule.scheduleColor);
e.Cell.Attributes.Add("scheduleId", schedule.scheduleId.ToString());
e.Cell.Text = schedule.scheduleTitle + "<br/>" + schedule.scheduleDescription;
e.Cell.Font.Bold = true;
e.Cell.Font.Size = FontUnit.Smaller;
}
}
} } protected void CalendarSchedule_SelectionChanged(object sender, EventArgs e)
{ }
/// <summary>
/// 添加日程
/// </summary>
/// <param name="strScheduleTitle">日程标题</param>
/// <param name="strScheduleDescription">日程描述</param>
/// <param name="strhdColor">标识颜色</param>
/// <param name="strlblSchedulePlanDate">计划时间</param>
/// <returns>1:成功,2:失败</returns>
[WebMethod]
public static string AddSchedule(string strScheduleTitle, string strScheduleDescription, string strhdColor, string strlblSchedulePlanDate, string strScheduleID)
{
//添加
if (strScheduleID == "NO")
{
Schedule.Model.Schedule schedule = new Schedule.Model.Schedule();
schedule.scheduleCreateDate = DateTime.Now;
schedule.scheduleColor = strhdColor;
schedule.scheduleDescription = strScheduleDescription;
schedule.SchedulePlanDate = Convert.ToDateTime(strlblSchedulePlanDate);
schedule.scheduleTitle = strScheduleTitle;
schedule.userId = _userInfo.userId;
ScheduleBLL scheduleBLL = new ScheduleBLL();
if (scheduleBLL.Add(schedule))
{
return "";
}
else
{
return "";
}
}
else
{
//编辑
Schedule.Model.Schedule schedule = new Schedule.Model.Schedule();
schedule.scheduleId = Convert.ToInt32(strScheduleID);
schedule.scheduleCreateDate = DateTime.Now;
schedule.scheduleColor = strhdColor;
schedule.scheduleDescription = strScheduleDescription;
schedule.SchedulePlanDate = Convert.ToDateTime(strlblSchedulePlanDate);
schedule.scheduleTitle = strScheduleTitle;
schedule.userId = _userInfo.userId;
ScheduleBLL scheduleBLL = new ScheduleBLL();
if (scheduleBLL.Update(schedule))
{
return "";
}
else
{
return "";
}
} }
/// <summary>
/// 编辑日程
/// </summary>
/// <param name="shecduleID">日程id</param>
/// <returns></returns>
[WebMethod]
public static string[] EditSchedule(string strScheduleID)
{
if (string.IsNullOrEmpty(strScheduleID))
{
return new string[];
}
else
{
int intScheduleID = Convert.ToInt32(strScheduleID);
ScheduleBLL scheduleBLL = new ScheduleBLL();
IList<Schedule.Model.Schedule> lstSchedules = scheduleBLL.GetModelList(" userid=" + _userInfo.userId + " and scheduleId=" + intScheduleID + "");
if (lstSchedules.Count > )
{
Schedule.Model.Schedule schedule = lstSchedules[];
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") };
}
else
{
return new string[];
}
}
}
/// <summary>
/// 删除日程
/// </summary>
/// <param name="secheduleID">日程id</param>
/// <returns></returns>
[WebMethod]
public static string DeleteSchedule(string strScheduleID)
{
if (string.IsNullOrEmpty(strScheduleID))
{
return "";
}
else
{
int intScheduleID = Convert.ToInt32(strScheduleID);
ScheduleBLL scheduleBLL = new ScheduleBLL();
if (scheduleBLL.Delete(intScheduleID))
{
return "";
}
else
{
return "";
}
}
}
/// <summary>
/// 月改变时触发的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void CalendarSchedule_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
{
dtCurrentDate = e.NewDate;
dtPriviousDate = e.PreviousDate;
_lstSchedules = _scheduleBLL.GetModelList(" userid=" + _userInfo.userId + " and SchedulePlanDate>='" + dtPriviousDate.AddDays(-) + "' and SchedulePlanDate <='" + dtCurrentDate.AddDays() + "'");
}
}
}

ScheduleManage.aspx.cs

总结

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

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

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

  1. [Asp.net]Calendar+JqueryUi实现日程管理——添加日程

    引言 之前在博客园里看到一篇文章,介绍的云日程,所以就一直在想如果是自己该如何实现,所以就自己尝试弄了一个简单的demo. 项目 效果图 日历控件,本来想弄一个js版的,后来考虑,js版的会花费更多的 ...

  2. 一步一步Asp.Net MVC系列_权限管理总结(附MVC权限管理系统源码)

    在上一节中我们总结了关于权限控制的方式,我们这一节讲解关于权限控制中角色权限的授予处理等等并做本系列的总结. 首先,我们来谈谈权限控制中角色权限的控制,上一节只是针对权限拦截中比较粗的控制,如果我们需 ...

  3. 系统右键菜单添加剪贴板清空项(隐藏DOS窗口)

    @color 0A @title 系统右键菜单添加剪贴板清空项(隐藏DOS窗口) by wjshan0808 @echo off echo 请输入右键菜单名称 set /p name= ::创建本机A ...

  4. win7下给右键菜单添加启动cmd命令

    win7下给右键菜单添加启动cmd命令 (2013-07-20 19:20:56) 转载▼ 标签: it 右键 cmd 分类: 小软件操作技巧     最近编辑器在用windows下的gvim,但进入 ...

  5. Windows下给鼠标右键菜单添加获得完全控制权限的菜单项

    这段时间计算机C分区里多了很多无用的文件,而且不在同一个目录下,搜索出来删除的时候提示没有管理员权限,需要在右键属性里面修改,非常麻烦,于是查询了一下发现可以在文件右键菜单添加一个获取权限的菜单项,这 ...

  6. 《ArcGIS Engine+C#实例开发教程》第六讲 右键菜单添加与实现

    原文:<ArcGIS Engine+C#实例开发教程>第六讲 右键菜单添加与实现 摘要:在这一讲中,大家将实现TOCControl控件和主地图控件的右键菜单.在AE开发中,右键菜单有两种实 ...

  7. 软件包管理_rpm命令管理_yum工具管理_文件归档压缩_源码包管理

    rpm命令管理软件 对于挂载的像U盘那种都会在midea目录下,但是会显示在桌面上 安装软件(i:install,v:verbose冗长的,h:human):rpm  -ivh  xxxx.rpm 安 ...

  8. VSTO 为Office已有右键菜单添加自己的菜单项(word,Excel)

    原文:VSTO 为Office已有右键菜单添加自己的菜单项(word,Excel) private void AddRightMenu()         {            Microsoft ...

  9. 为Windows资源管理器右键菜单添加菜单项

    为Windows资源管理器右键菜单添加菜单项 在Windows下命令行用的比较多,经常在资源管理器里翻到某个目录,若想要在此目录下跑命令,只能是打开cmd.exe,然后一路cd才能到达此目录. 每次都 ...

随机推荐

  1. SQL 语句实现排序问题!

    SQL 查询数据时按某列排序后增加排名列,需排名的列值相等时排名相同,即如需排名列数组为:9,9,8,7,7,6     添加的排名列数组需要显示为两种: 第一种:1,1,3,4,4,6 (这种排名方 ...

  2. IOS常用的第三方开发库

    开发几个常用的开源类库及下载地址: 1.json json编码解码2.GTMBase64 base64编码解码3.TouchXML xml解析4.SFHFKeychainUtils 安全保存用户密码到 ...

  3. JSP页面乱码全解析

    乱码指的是中文乱码. 一.POST乱码 由于两个页面都是用UTF-8编码,但是参数的传输默认是ISO-8859-1,这时候可以在接受参数之前 request.setCharacterEncoding( ...

  4. Hbulider 支持less保存自动编译

    设置less配置:文件写 .less,路径找lessc.cmd,找不到就下载,命令参数写:%FileName% %FileBaseName%.css这样以后就可以less文件自动生成css了!

  5. spring-cloud服务器雪崩效应

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  6. Android如何检查对象的类型

    The instanceof operator compares an object to a specified type. You can use it to test if an object ...

  7. Eclipse中设置中文件javadoc

    Eclipse中设置中文件javadoc 在Eclipse中,我们常常看一些英文的JavaDoc提示或者没有相应的提示是很不习惯的,如下图所示: 我们现在要把这种不习惯的提示改为中文的JavaDOC提 ...

  8. 第九章openwrt 703N 网口转串口+串口转网口TTL 数据传输

    原生串口      1.WR703N 自带 TTL 电平串口,设备文件为/dev/ttyATH0, 波特率 115200.但是硬件串口 没有接出来,需要自己焊线.破壳. 图 1. 正面图.两根线 TP ...

  9. Js的在线代码编辑器:CodeMirror

    github地址:https://github.com/codemirror/CodeMirror/tree/master/demo 里面包含需要的js.css文件以及大量的示例 官网:https:/ ...

  10. TYVJ P1933 绿豆蛙的归宿 题解(未完成)

    P1933 「Poetize3」绿豆蛙的归宿 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找 ...