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

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

基于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

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

  1. ASTreeView Demo:Add, Edit Delete nodes

    http://www.jinweijie.com/ http://www.astreeview.com/astreeviewdemo/astreeviewdemo1.aspx 選擇節點: <sc ...

  2. Linux上添加路由,删除路由,修改路由配置(route add, route del, 路由表项基本知识)

    路由基础知识: 是由一项或者多项路由表组成的,每个IP报文被发送前,系统都会查找主机路由表,决定将这个报文从 哪个网卡,发送到哪个下一跳.路由表项可以分成主机路由,网络路由和默认路由3种.每条路由表项 ...

  3. ubuntu删除route_linux下route add route del 用法

    显示现在所有路由 #route root@ubuntu:~# route Kernel IP routing table Destination     Gateway         Genmask ...

  4. ASP.NET MVC开发,编辑页面和添加页面基本相同,我们控制器 Add Edit是共用同一个View吗?...

    http://q.cnblogs.com/q/51693/ 这种的话,一般公用就好了.,如下的写法: [HttpGet]public ActionResult UserManage(int userI ...

  5. html在表格添加下拉按钮,Bootstrap-table 使用说明--如何在表格td里增加一个按钮

    如何在表格td里增加一个按钮:如何在列表操作列区域添加按钮 初始化表格 table.bootstrapTable -->columns 增加: { field: 'operate', title ...

  6. 「FastAdmin」fastadmin二次开发中如何自定义查询数据

    fastadmin二次开发中如何自定义查询数据 问题背景:最近做一个网站的过程中遇到了一个需求:对于不同用户组的用户,显示的数据要根据权限来筛选.问题看起来不是很难,文档和社区中已经给了足够的提示,我 ...

  7. B-JUI文档、下载

    概述 特别说明 本文档仅适用于最新版的B-JUI,网站首页或下载页可以查看B-JUI的最后更新时间. B-JUI前端管理框架适用于快速开发各类WEB管理系统,可与任意后端程序(java.php..ne ...

  8. jqGrid资料总结

    我的异常网 http://www.myexception.cn/ajax/414051.html jqGrid:二. 第一个jqGrid <!DOCTYPE html PUBLIC " ...

  9. fastadmin实现导出Excel和导入Excel数据

    第一:导出数据为Excel 注意:直接url访问,不能使用ajax,因为ajax要求返回数据,和PHPExcel一会浏览器输出冲突!将数据作为参数 1.导出所有用户数据 代码:在index.html文 ...

最新文章

  1. 复习计算机网络基础 day5--物理层
  2. 代码注释(图案:女孩儿)
  3. 如何找出孔洞位置进行填充_电伴热带破损位置如何快速找出
  4. python3 安装opencv_树莓派安装Python3的OpenCV
  5. 十大经典排序算法整理汇总(附代码)
  6. 2018-2019-1 20165212 《信息安全系统设计基础》第八周学习总结(pwd)
  7. php获取并删除数组的第一个和最后一个元素
  8. 【原创】开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式
  9. C语言课设----个人信息管理系统(包含学生成绩和消费记录)
  10. maccms重定向次数过多
  11. android上的sip软电话
  12. pycharm的python_stubs
  13. 快学会这个技能-.NET API拦截技法
  14. Ruby-from百度百科
  15. 数据库数据采集利器FlinkCDC
  16. linux查看进程占用pcu,ksoftirq占用PCU较高,电脑使用较卡,该如何排查问题和解决?...
  17. 黑色沙漠 无法使用未完成的文字
  18. 电力系统分析(Matlab代码实现)
  19. HDU1052Tian Ji -- The Horse Racing(分情况贪心)
  20. 如何将高频噪声从信号中滤除掉?

热门文章

  1. React开发(228):ant design table根据宽度自动忽略
  2. 前端学习(3266):js中this的指向
  3. 前端学习(3209):react中类中方法的this指向
  4. 前端学习(2624):state
  5. 前端学习(2507):初始化多个实例化对象
  6. 前端学习(2077):开始回顾
  7. 前端学习(2021)vue之电商管理系统电商系统之合并goodlist的分支
  8. 前端学习(1853)vue之电商管理系统电商系统之git安装
  9. 前端学习(1843):前端面试题之vue管理状态
  10. 前端学习(1840):前端面试题之小程序入门