关于dhtmlxScheduler的使用说明(ADD EDIT DEL,自定义CelendarBox)

由于比较多朋友询问我的使用问题,所以写一篇简单的使用说明:

可以看回以前相关的文章:

基于dhtmlxScheduler的个人计划...

探讨:OA系统的设计问题.

 

 

weebox[ PopUp - 弹出窗 对话框 ]
weebox是一个基于jquery的弹窗插件

 

dhtmlxScheduler[ Calendars - 日历组件 ]
dhtmlxScheduler是一个JavaScript日程安排控件,类似于Google日历。日历事件通过Ajax动态加载,支持通过拖放功能调整事件日期和时间。事件可以按天,周,月三个种视图显示。
================
以下进入正题:

 

 

function CalendarInit(sid,operator) {

    Owner
=(sid==operator);
    scheduler.config.first_hour
=8;
    scheduler.config.api_date
="%Y-%m-%d %H:%i";
    scheduler.config.xml_date
="%Y-%m-%d %H:%i";
    scheduler.config.hour_date
="%H:%i";
    scheduler.config.default_date
="%Y年%m月%d日";
    scheduler.config.month_date
="%Y年 %m月";
    scheduler.config.day_date
="%m月%d日";
    scheduler.config.start_on_monday
=true;
    
//scheduler.config.update_render=true;
    if(!Owner)
    {
        scheduler.config.drag_resize
=false
        scheduler.config.drag_move
=false
        scheduler.config.drag_create
=false
        scheduler.config.dblclick_create
=false;
        scheduler.config.edit_on_create
=false;
        scheduler.config.details_on_create
=false;

        
if(!Permission.Edit)
        {
            scheduler.config.readonly
=true;
            scheduler.attachEvent(
"onClick",function(id){
                CelendarBox(id);
            });
        }
    }
    
    scheduler.showLightbox 
= CelendarBox;
    scheduler.attachEvent(
"onBeforeEventDelete",Del);
    scheduler.attachEvent(
"onEventChanged"function(event_id,event_object){
         
//alert("onEventChanged: "+event_id);
         Edit(event_id,event_object);
     });
    scheduler.attachEvent(
"onEventAdded"function(event_id,event_object){
         
//alert("onEventAdded: "+event_id);
         Add(event_id,event_object,function(old_id,new_id){
             scheduler.changeEventId(old_id, new_id);
         });
    });
    scheduler.locale
={
        date:{
            month_full:[
"一月""二月""三月""四月""五月""六月""七月""八月""九月""十月""十一月""十二月"],
            month_short:[
"""""""""""""""""""""十一""十二"],
            day_full:[
"星期日""星期一""星期二""星期三""星期四""星期五""星期六"],
            day_short:[
""""""""""""""]
        },
        labels:{
            dhx_cal_today_button:
"今天",
            day_tab:
"",
            week_tab:
"",
            month_tab:
"",
            new_event:
"新工作计划",
            icon_save:
"保存",
            icon_cancel:
"取消",
            icon_details:
"详细",
            icon_edit:
"编辑",
            icon_delete:
"删除",
            confirm_closing:
""//Your changes will be lost, are your sure?
            confirm_deleting:"请确认你是否需要删除该工作计划?",
            section_content:
"内容",
            section_views:
"上级意见",
            section_time:
"时间"
        }
    };
    scheduler.init(
'scheduler_here',null,"week");
    scheduler.load(
"./ListData.action?sid="+sid+"&r="+Math.random());    

}
 

 

 

 

代码说明一下:

CalendarInit:这个是初始化日历的函数,是我从实际项目复制过来,无删减。

sid:所有者ID

operator:操作者ID

Owner=(sid==operator);//判断是否为所有者

Permission.Edit:(true、false),是否有修改权限

 

 

 

//以下代码为绑定事件:当点击条目,弹出窗口

scheduler.attachEvent(
"onClick",function(id){
    CelendarBox(id);
 });

//设置日程窗口函数为我自定义的函数

 scheduler.showLightbox 
= CelendarBox;

//以下代码为绑定事件:删除动作

//Del为删除对象函数
 scheduler.attachEvent("onBeforeEventDelete",Del);

//以下代码为绑定事件:条目变化(拖拉事件、调整时间)
 scheduler.attachEvent("onEventChanged"function(event_id,event_object){
         
//alert("onEventChanged: "+event_id);
   Edit(event_id,event_object);//Edit实际修改对象函数
  });

//以下代码为绑定事件:增加
 scheduler.attachEvent("onEventAdded"function(event_id,event_object){
         
//alert("onEventAdded: "+event_id);
   Add(event_id,event_object,function(old_id,new_id){
    scheduler.changeEventId(old_id, new_id);
   });
//Add实际增加对象函数
    });

 

 

scheduler.init('scheduler_here',null,"week");//初始化(见下)
 scheduler.load("./ListData.action?sid="+sid+"&r="+Math.random());//载入数据,为XML格式,见dhtmlxScheduler例子的XML文件格式

 

 

<div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
        
<div class="dhx_cal_navline">
            
<div class="dhx_cal_prev_button">&nbsp;</div>
            
<div class="dhx_cal_next_button">&nbsp;</div>
            
<div class="dhx_cal_today_button"></div>
            
<div class="dhx_cal_date"></div>
            
<div class="dhx_cal_tab" name="day_tab" style="right:204px;"></div>
            
<div class="dhx_cal_tab" name="week_tab" style="right:140px;"></div>
            
<div class="dhx_cal_tab" name="month_tab" style="right:76px;"></div>
        
</div>
        
<div class="dhx_cal_header">
        
</div>
        
<div class="dhx_cal_data">
        
</div>        
    
</div>

 

 

 

 

var _CelendarBox;//该处为,弹出窗口的HTML源码,我该处是通过AJAX预先载入HTML文件。
function CelendarBox(id)
{
    
if (!id) {
        
return
    }
    
if (!scheduler.callEvent("onBeforeLightbox", [id])) {
        
return;
    }
    
var o=scheduler.getEvent(id);
    
var h=240
    o.superior
=o.superior?Trim(o.superior):"";
    o.views
=o.views?Trim(o.views):"";
    o.content
=o.content?Trim(o.content):"";
    
var tmp=Box_Html.replace(/{title}/g,o.text);//替换窗口HTML代码的{title}
    tmp=tmp.replace(/{content}/g,o.content);//替换窗口HTML代码的{content}
    tmp=tmp.replace(/{superior}/g,o.superior);
    tmp
=tmp.replace(/{views}/g,o.views);

    
if(isEmpty(o.startTime))
    {
        o.startTime
=DateFormat(o.start_date);//日期格式转换为这样的格式2009-12-33
        o.endTime=DateFormat(o.end_date);//日期格式转换为这样的格式2009-12-33
    }
    tmp
=tmp.replace(/{startTime}/g,o.startTime);
    tmp
=tmp.replace(/{endTime}/g,o.endTime);
    
//弹出weeboxs的窗口
    _CelendarBox=$.weeboxs.open(tmp, {
        boxid:
'box',
        title:
'工作计划: '
        width:
500, height:h,
        showOk:ShowOk,
        oncancel:
function(box){
            scheduler._edit_stop_event(o, 
false);//当点击取消按钮时候,将dhtmlxScheduler的状态edit mode关闭,提交,触发相应动作(或者大家看看源码,好理解点)
            _CelendarBox.close();//关闭窗口
            _CelendarBox=null;
        },
        onok:
function(box){
            
var f=$("#boxForm");
            o.text
=$("#title",f).attr("value");
            o.content
=$("#content",f).attr("value");
            o.startTime
=$("#startTime",f).attr("value");
            o.endTime
=$("#endTime",f).attr("value");
            
if(Permission.Edit)
            {
                o.superior
=$("#superior",f).attr("value");
                o.views
=$("#views",f).attr("value");
            }
            o._timed 
= scheduler.is_one_day_event(o);//这里忘了什么意思,看看源码吧。
            o.start_date=scheduler.templates.api_date(o.startTime);//将2009-12-22的日期格式转换为dhtmlxScheduler内置的日期格式,忘记了是什么
            o.end_date=scheduler.templates.api_date(o.endTime);//将2009-12-22的日期格式转换为dhtmlxScheduler内置的日期格式,忘记了是什么
            scheduler._edit_stop_event(o, true);//将dhtmlxScheduler的状态edit mode关闭,提交,触发相应动作(或者大家看看源码,好理解点)
        }
    });
}
//关闭窗口函数
function CelendarBoxCloseing(id,data)
{
    scheduler.setEvent(id,data);
    scheduler.event_updated(data);
//更新显示的对象
    
    
if(_CelendarBox)
    {
        _CelendarBox.close();
        _CelendarBox
=null;
    }
    scheduler.callEvent(
"onAfterLightbox", [])//调用为onAfterLightbox的动作
}

function DateFormat(d)
{
    
return new Date(d).pattern("yyyy-MM-dd HH:mm");
}
//修改函数,其他函数大同小异
function Edit(id,data)
{
    json2from(data);
    
var f=$("#calendarForm");
    
if(isEmpty($("#title",f).attr("value")))
    {
        WarnBox(
"对不起,请输入标题!","错误");
        
return false;
    }
    
if(isEmpty($("#startTime",f).attr("value")))
    {
        WarnBox(
"对不起,请选择开始时间!","错误");
        
return false;
    }
    
if(isEmpty($("#endTime",f).attr("value")))
    {
        WarnBox(
"对不起,请选择结束时间!","错误");
        
return false;
    }
    
//GlobaAjax是我自己封装的AJAX提交的函数,其实大同小异。
    new GlobaAjax().Submit({
        url:
"Edit.action?calendar.id="+id,
        form:f,
        LoadingLayer:
'#DataLoading',
        successFunction: 
function(json) {

            CelendarBoxCloseing(id,data);
//成功以后,还要更新页面上的信息喔。
        }
    });
}
function json2from(json)
{
    
var f=$("#calendarForm");
    $(
"#title",f).attr("value",json.text);
    $(
"#content",f).attr("value",json.content);
    $(
"#views",f).attr("value",json.views);
    $(
"#superior",f).attr("value",json.superior);
    
if(isEmpty(json.startTime))
    {
        json.startTime
=DateFormat(json.start_date);
        json.endTime
=DateFormat(json.end_date);
    }
    $(
"#startTime",f).attr("value",json.startTime);
    $(
"#endTime",f).attr("value",json.endTime);
    
//alert(f.html());
}

 

 

转载请注明:http://www.cnblogs.com/smildlzj/

转载于:https://www.cnblogs.com/smildlzj/archive/2010/01/07/1641755.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【移植驱动到Linux3.4.2内核之二】LCD,触摸屏,按键,USB等驱动程序的移植心得总结

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 文章目录一移植驱动程序心得体会二移植LCD驱动程序记录三移植按键输入子系统驱动程序四移植触摸屏驱动程序五移植USB驱动程序今天移植了按键&#xff…

idea 解决jar 的冲突

1.maven 组件会自动去除重复的jar 注意&#xff01;灰色是去重的jar &#xff0c;实体颜色是使用的jar; 2.springboot 关于 Class path contains multiple SLF4J bindings.警告的解决 2.1查询jar的依赖结构: 查询出slf4j-log4j12 查询到然后执行exclude https://blog.csdn.ne…

永远要跟比你更成功的人在一起

永远要跟比你更成功的人在一起 (本文只有在月09日可以学习到。) 在你的朋友圈中&#xff0c;如果你是最成功的那一个&#xff0c;你就不会更成功了。 别怕与大人物打交道。最成功的人都是那些最容易与别人相处打交道的人&#xff0c;当你总是与最顶尖的人在一起时&#xff0c;你…

UML 模型

1.五分钟读懂UML类图 https://blog.csdn.net/soft_zzti/article/details/79811923

【C++深度剖析教程19】前置操作符与后置操作符

今天来学习C中的前置操作符&#xff08;i&#xff09;与后置操作符&#xff08;i&#xff09;。 一回顾 以前在C语言的理论课程中&#xff0c;我们就学过&#xff0c;前置和后置操作符&#xff0c;有一定的区别&#xff1a; 但是我们可以看到下图&#xff0c;发现前置和后…

【C++的深度剖析教程20】类型转换函数上

今天来学习类型转换函数。 一回顾 我们学习C语言的时候&#xff0c;都知道&#xff0c;标准的数据类型之间&#xff0c;是可以做类型的转换的。分为隐式类型转换和强制类型转换。那么强制类型转换呢&#xff0c;比较简单。但是隐式类型转换&#xff0c;却存在诸多问题。下面我…

【C++的深度剖析教程21】类型转换函数下

上一篇文章写了关于普通类型转换为类类型的语法与性质&#xff0c;今天我们来看一下&#xff1a;类类型如何转换为普通类型。 一、类型转换函数&#xff1a; C类中&#xff0c;可以定义类型转换函数&#xff0c;类型转换函数用于将类对象转换为其他类型。 语法规则&#xff…

自定义链表增,删除,链表逆序

工作时间长了&#xff0c;经常用框架&#xff0c;感觉真的成了coding,建议有时间可以刷一下lettcode 时间一长就会忘&#xff0c;写了大半天&#xff0c;记录一下&#xff0c;理解后再写特别简单&#xff0c;链表逆序看了很多博客&#xff0c;写法各式各样&#xff0c;但是感觉…

【C++深度剖析教程22】继承的概念和意义

今天我们来学习C中的继承的概念和意义。 一、类之间的组合关系 问题&#xff1a;类之间是否存在直接的关联关系&#xff1f; 回答&#xff1a;类之间存在组合的关系&#xff0c;整体与部分的关系。 可以看一下生活中的例子&#xff1a; 下面我们以一个简单的程序来看一下…

设计模式笔记(24)---访问者模式(行为型)

Gof定义 表示一个作用于某对象结构中的各元素的操作。它可以在不改变各元素的类的前提下定义作用于这些元素的新的操作。 动机 在软件构建过程中&#xff0c;由于需求的改变&#xff0c;某些类层次结构中常常需要增加新的行为&#xff08;方法&#xff09;&#xff0c;如果直接…

git 提交遇到error:fail to push some refer to 远程地址(url)

最近项目遇到一个问题&#xff0c;就是git 提交老是报错&#xff0c;但是在其他小伙伴&#xff0c;机器上没有事&#xff0c;调试了半天发现是git 提交时 -m ‘信息不能以“#”号开头’ 参考了下面博客&#xff0c;第一种操作方式&#xff1a; https://www.cnblogs.com/zndxal…

前端学习(95):ps基本操作与图片格式

jpg 色彩比较丰富 gif 动图 png 半透明 psd原始图片

【C++深度剖析教程23】继承中的访问级别

本C课程学习记录&#xff0c;完全来源于狄泰软件学院的相关课程&#xff0c;想一起学习的加我q1126137994或者q群199546072 给你推荐更多相关课程。 今天学习C中继承的访问级别。首先我们思考一个问题&#xff0c;子类是否可以直接访问父类的私有成员&#xff1f;&#xff1f…

【Makefile由浅入深完全学习记录1】认识make和makefile

学习交流加 个人qq&#xff1a; 1126137994个人微信&#xff1a; liu1126137994学习交流资源分享qq群&#xff1a; 962535112 今天开始学习项目又多了一项&#xff1a;Makefile由浅入深完全学习。之前做嵌入式Linux时&#xff0c;就一直在用make&#xff0c;但是对Makefile的理…

前端学习(96):切图流程

按下屏幕的prtscr 找到打开所在的文件 矩形框选中---ctrlc ---controlN------保存-----ctrlv 保存为jpg文件

【C++深度剖析教程24】C++中不同的继承方式

过完年了&#xff0c;今天开始写博客记录学习的过程。继续C的学习&#xff0c;今天我们来看C中不同的继承方式。 一、初探继承的方式 从上图看&#xff0c;是否可以将继承中的public换成protected或者private。如果可以&#xff0c;它们与public继承的区别是什么&#xff1f; …

前端学习(97):psd切图流程

编辑----首选项---增效工具----启用生成器 文件---生成----图像资源 选择图层修改命名为png&#xff0c;则再默认路径下生成。 默认为半透明

【C++深度剖析教程25】继承中的构造与析构

今天来学习C中继承的构造与析构&#xff0c;有兴趣一起学习的加qq&#xff1a;1126137994 1、问题 如何初始化父类成员&#xff1f;父类构造函数与子类构造函数有什么关系&#xff1f; 子类对象是如何构造的&#xff1f; 子类中可以定义构造函数子类构造函数必须对继承而来…

springboot创建子模块时遇到子模块覆盖父模块问题解决

1.最近更新git dev 开发分支需要添加一个子模块&#xff0c;创建过程中遇到 创建springboot 模块时&#xff0c;子模块覆盖了父模块&#xff0c;搞了半天&#xff0c;最后查询到解决办法如下&#xff1a; 1 多模块项目创建 因为本系列的下一篇是《Spring Boot集成Dubbo》&…

【C++深度剖析教程27】多态的概念与意义

今天来学习一个新的概念&#xff0c;多态&#xff01;&#xff01;&#xff01;多态在C编程中具有重要的地位与意义&#xff0c;是面向对象的一个重要思想&#xff01; 加qq1126137994一起学习更多技术~ 1、问题引入 父类与子类之间具有赋值兼容性; *子类对象可以当做父类对…