0

我想自定义 DojoX 日历小部件 ( http://dojotoolkit.org/reference-guide/1.8/dojox/calendar.html ) 以便从 php/mysql 动态加载事件。

我有一个存储事件的数据库表,并且在第一次初始化之后,应该再次检索事件(ajax 调用?)仅当我更改日历视图时,例如当我单击转到上/下个月时。所以我的问题是:我在哪里可以更改引用 Dojox 日历示例/文档页面的 JS 代码?为了在月份更改时调用(http post 或 get)PHP 文件并获取新的 JSON 数据集,我需要在 JS 代码中进行哪些更改?

我也读过这个帖子: dojox.calendar 和 JsonRest - 如何更新?

但:

  1. 我需要一个包含 HTML、JS 和 PHP 代码的完整工作示例(即使是最小的)
  2. 关于stackoverflow发布规则和网络礼仪,我无法在该线程上发布

我想有人已经开发了这种解决方案......

我希望有人可以帮助我,谢谢!

4

1 回答 1

2

根据您有多少事件,您最初可以将每个事件加载到日历中,无论您滚动哪个月份/视图,这些事件都会出现。

到目前为止,如何从数据库后端加载事件的示例:

当然。干得好:

假设您的php文件(我们称它为calendar-events.php)从您的 mysql 表中返回以下事件数据,JSON格式如下:

{
    "items": [
        {
            "id":"0",
            "summary":"An event in the calendar",
            "calendar":"calendar1",
            "startTime":"1351756800",
            "endTime":"1351771200"
        }
    ]
}

现在,创建检索数据的商店:

var calendarStore = new ItemFileWriteStore({
    url: "calendar-events.php",
    clearOnClose: true,
    urlPreventCache: true 
});

最后,将 store 设置为calendar并渲染calendar

calendar = new Calendar({
            store: calendarStore,
            dateInterval: "month",
            region: "center",
            roundToDay: false,
            editable: false,
            decodeDate: function(s){
                    return new Date(s * 1000);
            },
            style: "position:absolute;left:10px;top:10px;bottom:10px;right:10px;",
            columnViewProps: {
                    minHours: 0,
                    maxHours: 24
            }
    });
于 2012-12-11T23:03:27.910 回答