You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dhtmlx Scheduler的Day View中显示30天并添加横向滚动条?

实现Dhtmlx Scheduler日视图/月视图横向滚动的方案

核心实现思路

Dhtmlx Scheduler默认的日视图、月视图不支持横向滚动,需通过自定义视图扩展+DOM样式调整来实现需求:

  • 30天滚动日视图:基于原生日视图逻辑扩展,修改日期渲染范围为30天,给视图容器添加横向滚动样式,同时同步日期导航与滚动位置
  • 月视图横向滚动:通过CSS调整月视图的表格布局,让日期区域超出父容器宽度,触发横向滚动

示例代码:30天滚动日视图

// 自定义30天滚动日视图
scheduler.createView({
    name: "30day",
    start_on_monday: false,
    event_height: 50,
    tab: "30天视图",
    // 设置视图显示30天
    days: 30,
    // 视图切换后添加滚动样式
    onViewChange: function(){
        const colWidth = 120; // 单个日期列的宽度
        const dayViewHeader = document.querySelector(".dhx_cal_data .dhx_cal_scale_holder");
        const dayViewContent = document.querySelector(".dhx_cal_data .dhx_cal_data_holder");
        const schedulerContainer = document.querySelector(".dhx_cal_container");

        // 设置日期头部和内容容器的总宽度
        dayViewHeader.style.width = `${30 * colWidth}px`;
        dayViewContent.style.width = `${30 * colWidth}px`;
        // 开启父容器横向滚动
        schedulerContainer.style.overflowX = "auto";
        schedulerContainer.style.overflowY = "hidden";
    },
    // 日期切换时,让选中日期滚动到可视区域
    onDateChange: function(){
        const activeCol = document.querySelector(".dhx_cal_scale_cell.dhx_cal_scale_cell_active");
        activeCol?.scrollIntoView({inline: "center"});
    }
});

// 切换到自定义30天视图
scheduler.setCurrentView(new Date(), "30day");

示例代码:月视图横向滚动

/* 强制月视图日期区域可横向滚动 */
.dhx_cal_month .dhx_cal_data_holder {
    overflow-x: auto;
    overflow-y: hidden;
}
/* 让月视图的表头和内容表格自适应宽度 */
.dhx_cal_month .dhx_month_body,
.dhx_cal_month .dhx_month_head {
    width: max-content;
}

关键注意事项

  • 自定义视图时需确保事件的日期范围判断逻辑正确,避免事件显示异常
  • 可通过调整colWidth参数适配不同屏幕尺寸的显示效果
  • 可自定义CSS美化滚动条样式,保持与Scheduler整体风格一致

内容的提问来源于stack exchange,提问作者WpFinder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:20:28