导航

xgCalendar在ASP.NET中的使用

Posted on 2014-09-27 16:19  ggzone  阅读(374)  评论(0编辑  收藏  举报

1.将wdCalendar文件夹考入项目中

2.在页面中添加引用,见3中head标签中定义

3.配置xgCalendar,两段代码放在一起就是完整的页面

body>
    <div>
        <div></div>
        <div id="calhead" style="padding-left: 1px; padding-right: 1px;">
            <div class="cHead">
                <div class="ftitle">日历控件</div>
                <div id="loadingpannel" class="ptogtitle loadicon" style="display: none;">加载数据中...</div>
                <div id="errorpannel" class="ptogtitle loaderror" style="display: none;">很抱歉,无法加载数据,请稍后再试</div>
            </div>
            <div id="caltoolbar" class="ctoolbar">
                <div id="faddbtn" class="fbutton">
                    <%--<div>								*******************此处可以去掉注释
                        <span title='Click to Create New Event' class="addcal">新增 
                        </span>
                    </div>--%>
                </div>
                <div class="btnseparator"></div>
                <div id="showtodaybtn" class="fbutton">
                    <div>
                        <span title='Click to back to today ' class="showtoday">Today</span>
                    </div>
                </div>
                <div class="btnseparator"></div>

                <div id="showdaybtn" class="fbutton">
                    <div><span title='Day' class="showdayview">天</span></div>
                </div>
                <div id="showweekbtn" class="fbutton fcurrent">
                    <div><span title='Week' class="showweekview">周</span></div>
                </div>
                <div id="showmonthbtn" class="fbutton">
                    <div><span title='Month' class="showmonthview">月</span></div>

                </div>
                <div class="btnseparator"></div>
                <div id="showreflashbtn" class="fbutton">
                    <div><span title='Refresh view' class="showdayflash">刷新</span></div>
                </div>
                <div class="btnseparator"></div>
                <div id="sfprevbtn" title="Prev" class="fbutton">
                    <span class="fprev"></span>

                </div>
                <div id="sfnextbtn" title="Next" class="fbutton">
                    <span class="fnext"></span>
                </div>
                <div class="fshowdatep fbutton">
                    <div>
                        <input type="hidden" name="txtshow" id="hdtxtshow" />
                        <span id="txtdatetimeshow">Loading</span>

                    </div>
                </div>

                <div class="clear"></div>
            </div>
        </div>
        <div style="padding: 1px;">

            <div class="t1 chromeColor">
                 
            </div>
            <div class="t2 chromeColor">
                 
            </div>
            <div id="dvCalMain" class="calmain printborder">
                <div id="gridcontainer" style="overflow-y: visible;">
                </div>
            </div>
            <div class="t2 chromeColor">
                 
            </div>
            <div class="t1 chromeColor">
                 
            </div>
        </div>

    </div>

</body>


<head id="Head1">
    <title>日历控件</title>							//**********************************引用
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <link href="wdCalendar/css/dailog.css" rel="stylesheet" type="text/css" />
    <link href="wdCalendar/css/calendar.css" rel="stylesheet" type="text/css" />
    <link href="wdCalendar/css/dp.css" rel="stylesheet" type="text/css" />
    <link href="wdCalendar/css/alert.css" rel="stylesheet" type="text/css" />
    <link href="wdCalendar/css/main.css" rel="stylesheet" type="text/css" />
    <script src="wdCalendar/src/jquery.js" type="text/javascript"></script>
    <script src="wdCalendar/src/Plugins/Common.js" type="text/javascript"></script>
    <script src="wdCalendar/src/Plugins/datepicker_lang_US.js" type="text/javascript"></script>
    <script src="wdCalendar/src/Plugins/jquery.datepicker.js" type="text/javascript"></script>
    <script src="wdCalendar/src/Plugins/jquery.alert.js" type="text/javascript"></script>
    <script src="wdCalendar/src/Plugins/jquery.ifrmdailog.js" defer="defer" type="text/javascript"></script>
    <script src="wdCalendar/src/Plugins/wdCalendar_lang_US.js" type="text/javascript"></script>
    <script src="wdCalendar/src/Plugins/jquery.calendar.js" type="text/javascript"></script>

    <script type="text/javascript">
        $(document).ready(function () {
            var view = "week";

            var DATA_FEED_URL = "datafeed.ashx";				//*****************配置用于处理请求的处理程序
            
            var op = {
                view: view,
                theme: 3,
                showday: new Date(),
                EditCmdhandler: Edit,
                DeleteCmdhandler: Delete,
                ViewCmdhandler: View,
                onWeekOrMonthToDay:wtd,
                DIYquickAspx: "edit.aspx",   //自定义快速添加、新建和更新时弹出的窗口,使用quickAddUrl时该属性无效。注:bug  quickAdd							//Hand设置无效,所以找的替代方法。需要在jQuery.Calendar.js中加段代码
                onBeforeRequestData: cal_beforerequest,
                onAfterRequestData: cal_afterrequest,
                onRequestDataError: cal_onerror,
                autoload: true,
                enableDrag: false,					//不想让磁贴被随意拖动,所以设置false
                extParam: [],
                url: DATA_FEED_URL + "?method=list",
                //quickAddUrl: DATA_FEED_URL + "?method=add",//设置此字段将使用默认快速添加窗口,能掩盖DIYquickAspx部分功能,即自定/													//义快速添加窗口的使用
                quickUpdateUrl: DATA_FEED_URL + "?method=update",
                quickDeleteUrl: DATA_FEED_URL + "?method=remove"
            };
            //**********************************调用op设置的参数的方法,比如:$("#gridcontainer").BcalGetOp().DIYquickAspx
            var $dv = $("#calhead");
            var _MH = document.documentElement.clientHeight;
            var dvH = $dv.height() + 2;
            op.height = _MH - dvH;
            op.eventItems = [];

            
            var p = $("#gridcontainer").bcalendar(op).BcalGetOp();
            if (p && p.datestrshow) {
                $("#txtdatetimeshow").text(p.datestrshow);
            }

            $("#caltoolbar").noSelect();

            $("#hdtxtshow").datepicker({
                picker: "#txtdatetimeshow", showtarget: $("#txtdatetimeshow"),
                onReturn: function (r) {
                    var p = $("#gridcontainer").gotoDate(r).BcalGetOp();
                    if (p && p.datestrshow) {
                        $("#txtdatetimeshow").text(p.datestrshow);
                    }
                }
            });
            function cal_beforerequest(type) {
                var t = "数据加载中...";
                switch (type) {
                    case 1:
                        t = "数据加载中...";
                        break;
                    case 2:
                    case 3:
                    case 4:
                        t = "该请求处理...";
                        break;
                }
                $("#errorpannel").hide();
                $("#loadingpannel").html(t).show();
            }
            function cal_afterrequest(type) {
                switch (type) {
                    case 1:
                        $("#loadingpannel").hide();
                        break;
                    case 2:
                    case 3:
                    case 4:
                        $("#loadingpannel").html("Success!");
                        window.setTimeout(function () { $("#loadingpannel").hide(); }, 2000);
                        break;
                }

            }
            function cal_onerror(type, data) {
                $("#errorpannel").show();
            }
            function Edit(data) {
                var eurl = $("#gridcontainer").BcalGetOp().DIYquickAspx+"?id={0}&start={2}&end={3}&isallday={4}&title={1}";
                if (data) {
                    var url = StrFormat(eurl, data);
                    OpenModelWindow(url, {
                        width: 600, height: 400, caption: "Manage  The Calendar", onclose: function () {
                            $("#gridcontainer").reload();
                        }
                    });
                }
            }


            function View(data) {
                var str = "";
                $.each(data, function (i, item) {
                    str += "[" + i + "]: " + item + "\n";
                });
                document.write(str); 
            }
            function Delete(data, callback) {
                $.alerts.okButton = "确定";
                $.alerts.cancelButton = "取消";
                hiConfirm("是否删除该日历?", '确认', function (r) { r && callback(0); });
            }
            function wtd(p) {
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }
                $("#caltoolbar div.fcurrent").each(function () {
                    $(this).removeClass("fcurrent");
                })
                $("#showdaybtn").addClass("fcurrent");
            }
            //to show day view
            $("#showdaybtn").click(function (e) {
                //document.location.href="#day";
                $("#caltoolbar div.fcurrent").each(function () {
                    $(this).removeClass("fcurrent");
                })
                $(this).addClass("fcurrent");
                var p = $("#gridcontainer").swtichView("day").BcalGetOp();
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }
            });
            //to show week view
            $("#showweekbtn").click(function (e) {
                //document.location.href="#week";
                $("#caltoolbar div.fcurrent").each(function () {
                    $(this).removeClass("fcurrent");
                })
                $(this).addClass("fcurrent");
                var p = $("#gridcontainer").swtichView("week").BcalGetOp();
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }

            });
            //to show month view
            $("#showmonthbtn").click(function (e) {
                //document.location.href="#month";
                $("#caltoolbar div.fcurrent").each(function () {
                    $(this).removeClass("fcurrent");
                })
                $(this).addClass("fcurrent");
                var p = $("#gridcontainer").swtichView("month").BcalGetOp();
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }
            });


            //给刷新按钮添加单击事件
            $("#showreflashbtn").click(function (e) {
                $("#gridcontainer").reload();
            });

            //Add a new event 新增
            $("#faddbtn").click(function (e) {
                var url = $("#gridcontainer").BcalGetOp().DIYquickAspx;
                OpenModelWindow(url, { width: 500, height: 400, caption: "Create New Calendar" });
            });
            //go to today
            $("#showtodaybtn").click(function (e) {
                var p = $("#gridcontainer").gotoDate().BcalGetOp();
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }
            });
            //previous date range
            $("#sfprevbtn").click(function (e) {
                var p = $("#gridcontainer").previousRange().BcalGetOp();
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }

            });
            //next date range
            $("#sfnextbtn").click(function (e) {
                var p = $("#gridcontainer").nextRange().BcalGetOp();
                if (p && p.datestrshow) {
                    $("#txtdatetimeshow").text(p.datestrshow);
                }
            });
        });
    </script>
</head>

4.jquery.calendar.js的修改:

在 $.fn.bcalendar = function(option) {  var def = { 后添加属性定义: DIYquickAspx:"";同时在添加:

 //快速添加响应事件
        function quickadd(start, end, isallday, pos) {
            if ((!option.quickAddHandler && option.quickAddUrl == "") || option.readonly) {
                /*********************************自己添加************************************************/
                var startTime = dateFormat.call(start, i18n.xgcalendar.dateformat.fulldayvalue + " HH:mm");
                var endTime = dateFormat.call(end, i18n.xgcalendar.dateformat.fulldayvalue + " HH:mm");  //将选的时间传到edit.aspx																//中
                var url = option.DIYquickAspx+"?startTime=" + startTime + "&endTime=" + endTime;
                OpenModelWindow(url, { width: 500, height: 400, caption: "Create New Calendar" });
               

                /*********************************自己添加************************************************/
                return;
            }

在此处调用函数和获取属性是通过:option.quickAddHandler和option.quickAddHandler.call的形式进行的。


在jquery.calendar.js中获取传递信息的方法:

function dayshow(e, data) {
            if (data == undefined) {
                data = getdata($(this));
            }
            alert(data[0]);}



通过自定义的这个快速添加弹出自定义的添加窗口,同时所选择的时间被设置。而且可以添加额外的控件。具体见代码。

实测运行通过:VS2013+MySQL