[Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)
引言
出差终于回来了,这篇文章算是这个月的博客的开篇吧。
上篇文章:[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实现日程管理(右键菜单,添加,编辑,删除,源码)的更多相关文章
- [Asp.net]Calendar+JqueryUi实现日程管理——添加日程
引言 之前在博客园里看到一篇文章,介绍的云日程,所以就一直在想如果是自己该如何实现,所以就自己尝试弄了一个简单的demo. 项目 效果图 日历控件,本来想弄一个js版的,后来考虑,js版的会花费更多的 ...
- 一步一步Asp.Net MVC系列_权限管理总结(附MVC权限管理系统源码)
在上一节中我们总结了关于权限控制的方式,我们这一节讲解关于权限控制中角色权限的授予处理等等并做本系列的总结. 首先,我们来谈谈权限控制中角色权限的控制,上一节只是针对权限拦截中比较粗的控制,如果我们需 ...
- 系统右键菜单添加剪贴板清空项(隐藏DOS窗口)
@color 0A @title 系统右键菜单添加剪贴板清空项(隐藏DOS窗口) by wjshan0808 @echo off echo 请输入右键菜单名称 set /p name= ::创建本机A ...
- win7下给右键菜单添加启动cmd命令
win7下给右键菜单添加启动cmd命令 (2013-07-20 19:20:56) 转载▼ 标签: it 右键 cmd 分类: 小软件操作技巧 最近编辑器在用windows下的gvim,但进入 ...
- Windows下给鼠标右键菜单添加获得完全控制权限的菜单项
这段时间计算机C分区里多了很多无用的文件,而且不在同一个目录下,搜索出来删除的时候提示没有管理员权限,需要在右键属性里面修改,非常麻烦,于是查询了一下发现可以在文件右键菜单添加一个获取权限的菜单项,这 ...
- 《ArcGIS Engine+C#实例开发教程》第六讲 右键菜单添加与实现
原文:<ArcGIS Engine+C#实例开发教程>第六讲 右键菜单添加与实现 摘要:在这一讲中,大家将实现TOCControl控件和主地图控件的右键菜单.在AE开发中,右键菜单有两种实 ...
- 软件包管理_rpm命令管理_yum工具管理_文件归档压缩_源码包管理
rpm命令管理软件 对于挂载的像U盘那种都会在midea目录下,但是会显示在桌面上 安装软件(i:install,v:verbose冗长的,h:human):rpm -ivh xxxx.rpm 安 ...
- VSTO 为Office已有右键菜单添加自己的菜单项(word,Excel)
原文:VSTO 为Office已有右键菜单添加自己的菜单项(word,Excel) private void AddRightMenu() { Microsoft ...
- 为Windows资源管理器右键菜单添加菜单项
为Windows资源管理器右键菜单添加菜单项 在Windows下命令行用的比较多,经常在资源管理器里翻到某个目录,若想要在此目录下跑命令,只能是打开cmd.exe,然后一路cd才能到达此目录. 每次都 ...
随机推荐
- ExtJs ComboBox 在IE 下 自动完成功能无效的解决方案
使用 ComboBox 来作为自动完成的组件,就像google suggestion ,可是在IE下怎么也无法输入字符,是处于不可编辑状态,而firefox和chrome都正常显示.我在2个ExtJs ...
- 《C++反汇编与逆向分析技术揭秘》之十——构造函数
对象生成时会自动调用构造函数.只要找到了定义对象的地方,就找到了构造函数调用的时机.不同作用域的对象的生命周期不同,如局部对象.全局对象.静态对象等的生命周期各不相同,只要知道了对象的生命周期,便可以 ...
- Flink及主流流框架spark,storm比较
干货 | Flink及主流流框架比较 IT刊 百家号17-05-2220:16 引言 随着大数据时代的来临,大数据产品层出不穷.我们最近也对一款业内非常火的大数据产品 - Apache Flink做了 ...
- gpu和cpu区别
GPU的功耗远远超过CPUCache, local memory: CPU > GPU Threads(线程数): GPU > CPURegisters: GPU > CPU 多寄存 ...
- .net 导出带条码的PDF
Nuget添加引用:ZXing.Net生成条形码,ZXing.Net.Bindings.ImageSharp生成图片 将图片流插入单元格 举个栗子: BarcodeWriter writer = ne ...
- Node.js:创建应用+回调函数(阻塞/非阻塞)+事件循环
一.创建应用 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi.从这个角度看,整个"接收 HTTP ...
- linux 处理键盘 鼠标事件
Linux下鼠标和键盘的模拟控制,也就是为手势和语音控制鼠标和键盘部分服务的. 有关于本系统构建的文章结构都会由三个部分来组织,一是该功能模块的介绍和在Linux下简单应用程序的实现:二是将该功能模块 ...
- [Python爬虫] 之六:Selenium 常用控件用法
Selenium 常用控件用法 1.文本框 上图中,如何定位搜索文本框,并输入搜索内容进行搜索 首先:利用方法 find_element_by_xpath定位元素:inputElements = se ...
- Javaee项目经验须知
Java的主要应用领域就是企业级的项目开发!具体要点(09年,那一年我去面试,被拒了几次,想起来还不错!他锻炼了我的心理素质,让我体会到很多,笑一个吧!): 1.掌握项目开发的基本步骤 2.具备极强的 ...
- JSP2.0自定义标签
JSP1.0中可以通过继承TagSupport或者BodyTagSupport来实现自定义的tag处理方法. JSP2.0中也支持另外一种更为简单的自定tag的方法,那就是直接讲JSP代码保存成*.t ...