好久好久好久,,,没有写博客了,,久到账号都忘记了。。。。分享一个干货。。。。

废话少说,先看看效果图。

要实现这样一个功能,先创建一个用于存储日程的记录表(不要问我为什么都是大写,因为初版在oracle中,现在在sqlserver,,哈哈哈哈,,,断气了,,,,我先缓缓。。。),大概如下:

前端view主要代码,表单控件我做了进一步封装(每次都写控件太太费劲了,,,,,我比较懒。。。。),亲在使用过程中替换成自己的表单控件即可。

        <div class="toolbar">
<a href="javascript:void(0)" id="btnAdd" class="easyui-linkbutton" plain="true" iconcls="icon-add"
onclick="NewCalendar()">新建</a>
<a href="javascript:void(0)" id="btnQuery" class="easyui-linkbutton" plain="true"
iconcls="icon-search" onclick="OpenQueryPage()">查询</a>
</div>
<div id="calendar" style="width: 950px;margin: 10px auto;"></div> <div id="OpenQuery" class="easyui-window" style="width: 850px; height: 510px;" closed="true">
</div>
<div style="display: none">
<div id="dlg_All" style="width: 380px; height: 450px;">
<form id="dlg_ff" method="post" action="">
<input id="hdCalendar_Id" type="hidden" name="Calendar_Id" />
<table class="table">
<tr>
<td class="tdt">
@Html.EULabel("开始日期:", "Start_Date")
</td>
<td class="tdv">
@Html.EUTextBox_Date("Start_Date","")
</td>
</tr>
<tr>
<td class="tdt">
@Html.EULabel("开始时间:", "Start_Time")
</td>
<td class="tdv">
@Html.EUTextBox_Time("Start_Time", "")
</td>
</tr>
<tr>
<td class="tdt">
@Html.EULabel("结束日期:", "End_Date")
</td>
<td class="tdv">
@Html.EUTextBox_Date("End_Date", "")
</td>
</tr>
<tr>
<td class="tdt">
@Html.EULabel("结束时间:", "End_Time")
</td>
<td class="tdv">
@Html.EUTextBox_Time("End_Time", "")
</td>
</tr>
<tr>
<td class="tdt">
@Html.EULabel("标题:", "Title")
</td>
<td class="tdv">
@Html.EUTextBox("Title", 50)
</td>
</tr>
<tr>
<td class="tdt">
@Html.EULabel("备注:", "Description")
</td>
<td class="tdv">
@Html.EUTextArea("Description", 200,"86%","80px",false)
</td>
</tr>
</table>
</form>
</div>
<div id="btns_All">
@Html.EUButton("btn_DlgAdd", "保存", "icon-ok", "AddSaveEvent()")
@Html.EUButton("btn_DlgEdit", "保存", "icon-ok", "EditSaveEvent()")
@Html.EUButton("btn_DlgDel", "删除", "icon-delete", "DeleteSaveEvent()")
@Html.EUButton("btn_DlgCancle", "清空", "icon-clear", "javascript:$('#dlg_All').find('form').form('clear');")
@Html.EUButton("btn_DlgClose", "关闭", "icon-off", "javascript:$('#dlg_All').dialog('close');")
</div>
</div>

对应js部分,代码全部贴出了,如下:

var dlg_All;
var dlg_OpenQuery;
$(function () {
dlg_All = $('#dlg_All');
dlg_All.dialog({
closed: true,
modal: true,
buttons: '#btns_All'
});
dlg_OpenQuery = $('#OpenQuery'); var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear(); $('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: false,
dayClick: function (date, allDay, jsEvent, view) {
AddCalendar($.fullCalendar.formatDate(date, "yyyyMMdd"));
},
eventMouseover: function (calEvent, jsEvent, view) {
var fstart = $.fullCalendar.formatDate(calEvent.start, "yyyy/MM/dd HH:mm");
var fend = $.fullCalendar.formatDate(calEvent.end, "yyyy/MM/dd HH:mm");
$(this).attr('title', fstart + " - " + fend + " " + "标题" + " : " + calEvent.title);
$(this).css('font-weight', 'normal');
},
eventClick: function (event) {
OpenCalendar(event.id);
},
events: function (start, end, callback) {
var datestart = $.fullCalendar.formatDate(start, "yyyyMMdd");
var dateend = $.fullCalendar.formatDate(end, "yyyyMMdd");
$.ajax({
url: '/Calendar_Base/CalDataList',
dataType: 'json',
cache: false,
data: {
start: datestart,
end: dateend
},
success: function (result) {
var events = [];
for (var i = 0; i < result.length; i++) {
events.push({
title: result[i].TITLE,
start: string2date(result[i].START_DATE, result[i].START_TIME),
end: string2date(result[i].END_DATE, result[i].END_TIME),
id: result[i].CALENDAR_ID
});
}
callback(events);
}
});
}
});
}); function string2date(dt, ti) {
var y = dt.substr(0, 4);
var m = dt.substr(4, 2);
var d = dt.substr(6, 2);
return new Date(Date.parse(y + '/' + m + '/' + d + ' ' + ti));
} function OpenQueryPage() {
dlg_OpenQuery.window({
closed: true,
modal: true,
title: '日程清单',
href: '/Calendar_Base/IndexQuery',
iconCls: 'icon-search',
minimizable: false,
maximizable: false,
collapsible: false
});
dlg_OpenQuery.window("open");
} function AddCalendar(pDate) {
$("#btn_DlgAdd").show(); //添加保存
$("#btn_DlgCancle").show(); //清空
$("#btn_DlgEdit").hide(); //编辑保存
$("#btn_DlgDel").hide(); //删除
dlg_All.dialog({
iconCls: 'icon-add',
title: '添加信息'
});
dlg_All.find('form').form('clear');
$("#Start_Date").datebox('setValue', pDate.toString());
$('#Start_Time').timespinner('setValue', '00:00');
$("#End_Date").datebox('setValue', pDate.toString());
$('#End_Time').timespinner('setValue', '23:59');
$('#dlg_ff').form('validate')
dlg_All.dialog('open');
} function OpenCalendar(pCalendar_Id) {
dlg_All.dialog({
iconCls: 'icon-edit',
title: '编辑信息'
});
$("#btn_DlgAdd").hide();
$("#btn_DlgCancle").hide();
$("#btn_DlgEdit").show();
$("#btn_DlgDel").show(); //删除
$('#dlg_ff').form('clear');
$('#dlg_ff').form('load', '/Calendar_Base/QueryOne?Calendar_Id=' + pCalendar_Id);
dlg_All.dialog('open');
} function NewCalendar() {
$("#btn_DlgAdd").show(); //添加保存
$("#btn_DlgCancle").show(); //清空
$("#btn_DlgEdit").hide(); //编辑保存
$("#btn_DlgDel").hide(); //删除
dlg_All.dialog({
iconCls: 'icon-add',
title: '添加信息'
});
dlg_All.find('form').form('clear');
dlg_All.dialog('open');
}; function EditSaveEvent() {
if ($('#dlg_ff').form('validate')) {
if ($("#Start_Date").datebox('getValue') > $("#End_Date").datebox('getValue')) {
showEuMsg("【开始日期】不能大于【结束日期】!", "warning");
return false;
}
if ($("#Start_Date").datebox('getValue') == $("#End_Date").datebox('getValue')) {
if ($('#Start_Time').timespinner('getValue') > $('#End_Time').timespinner('getValue')) {
showEuMsg("【开始时间】不能大于【结束时间】!", "warning");
return false;
}
}
$('#dlg_ff').form('submit', {
url: '/Calendar_Base/EditOne',
success: function (result) {
var data = eval('(' + result + ')');
if (data.success) {
dlg_All.dialog('close');
$("#calendar").fullCalendar('refetchEvents');
showEuMsg(data.msg, "success");
}
else
showEuMsg(data.msg, "error");
}
});
}
} function AddSaveEvent() {
if ($('#dlg_ff').form('validate')) {
if ($("#Start_Date").datebox('getValue') > $("#End_Date").datebox('getValue')) {
showEuMsg("【开始日期】不能大于【结束日期】!", "warning");
return false;
}
if ($("#Start_Date").datebox('getValue') == $("#End_Date").datebox('getValue')) {
if ($('#Start_Time').timespinner('getValue') > $('#End_Time').timespinner('getValue')) {
showEuMsg("【开始时间】不能大于【结束时间】!", "warning");
return false;
}
}
$('#dlg_ff').form('submit', {
url: '/Calendar_Base/AddOne',
success: function (result) {
var data = eval('(' + result + ')');
if (data.success) {
dlg_All.dialog('close');
$("#calendar").fullCalendar('refetchEvents');
showEuMsg(data.msg, "success");
}
else
showEuMsg(data.msg, "error");
}
});
}
}; function DeleteSaveEvent() {
var postData = {
Calendar_Id: $("#hdCalendar_Id").val()
}
$.messager.confirm("提示", "您确认删除选定的记录吗?", function (deleteAction) {
if (deleteAction) {
$.ajax({
url: "/Calendar_Base/DeleteOne",
type: "post",
data: postData,
cache: false,
dataType: "json",
success: function (result) {
if (result.success) {
dlg_All.dialog('close');
$("#calendar").fullCalendar('refetchEvents');
showEuMsg(result.msg, "success");
}
else
showEuMsg(result.msg, "error");
}
});
}
});
};

下面就是在对应的controller中写相关的处理事件即可,这里就不做说明了(接触过mvc的应该都会,,,不会。。。。。。。就看看得了。。。。)

fullcalendar下载地址:fullcalendar.rar

Easyui+MVC+FullCalendar插件实现日程记录功能的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(86)-日程管理-fullcalendar插件用法

    前言 本文分享fullcalendar用法,最后面提供代码下载 说到日程管理,基于JQuery的插件FullCalendar当之无愧,完整的API稳定和调用方式,非常易于扩展!可以用于系统的个人历程管 ...

  2. 基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...

  3. fullcalendar插件日程管理

    日程管理-fullcalendar插件用法   前言 本文分享fullcalendar用法,最后面提供代码下载 说到日程管理,基于JQuery的插件FullCalendar当之无愧,完整的API稳定和 ...

  4. (转)基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录

    http://www.cnblogs.com/wuhuacong/p/3667703.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...

  5. jQuery Tags Input 插件显示选择记录

    利用jQuery Tags Input 插件显示选择记录 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采 ...

  6. 从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

    标题:从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/112 ...

  7. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装

    标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...

  8. 从零开始实现ASP.NET Core MVC的插件式开发(五) - 插件的删除和升级

    标题:从零开始实现ASP.NET Core MVC的插件式开发(五) - 使用AssemblyLoadContext实现插件的升级和删除 作者:Lamond Lu 地址:https://www.cnb ...

  9. Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)

    简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...

随机推荐

  1. 一天搞定HTML----标签语义化04

    根据页面里不同的内容,选择最适合它的标签,而不通篇只用一种标签 标签语义化作用: 代码演示 通过比较- - -H5布局和DIV+CSS 布局- - -体现标签语义化 注意: 标签语义化,不仅仅只是指使 ...

  2. cpp(第四章)

    1.索引比数组长度少1: 2.c++中不能数组赋给另一个数组:只能定义时才能使用初始化: 3.c++11中{}内为空,默认赋值为0,而c++中{}如果只对部分初始化,其他部分将被设置为0:c++11使 ...

  3. Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6985816.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十)--My ...

  4. Chapter 7:Statistical-Model-Based Methods

    作者:桂. 时间:2017-05-25  10:14:21 主要是<Speech enhancement: theory and practice>的读书笔记,全部内容可以点击这里. 书中 ...

  5. Java基础——关于访问权限的一道例题

    一.回顾访问修饰符 ==public:被它修饰的类,属性,方法,不仅可以跨类访问,而且可以跨包(package)访问 ==private:可以修饰数据成员,构造方法,方法,不能修饰类,被它修饰的成员只 ...

  6. ffmpeg参数说明

    ffmpeg.exe -i F:\慶哥\慶哥之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wmv ...

  7. 第二章完结,包含exam练习

    正则方程(Normal Equation) 梯度下降是最小化代价函数\(J(\theta)\)的一种方式,这里提出了另一种方式即正则方式不使用迭代方式:\(\theta = (X^TX)^{-1}X^ ...

  8. 开始学习机器学习,从Ng的视频开始

    时隔开5个月,忙完了考研和毕设后终于有时间搞自己想搞得,研究生导师方向是图像处理与机器学习结合,重新开工 何为机器学习? 对于机器学习(Machine Learning)的定义大体上有两种,第一种是美 ...

  9. PHP设计模式:工厂方法

    示例代码详见https://github.com/52fhy/design_patterns 工厂方法 工厂方法是针对每一种产品提供一个工厂类.通过不同的工厂实例来创建不同的产品实例. 相比简单工厂, ...

  10. Jquery DataTables 使用AJAX POST的问题

    最近项目在用需要用表格,听说DataTables很好很强大,于是用了一下. Get请求没什么问题,问题处在POST请求上 Jquery原生的POST请求没有问题,代码如下 $.ajax({   url ...