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

如何为Kendo Scheduler设置周末背景样式

为Kendo Scheduler周末设置自定义背景样式的解决方案

当然可以给Kendo Scheduler的周末设置不同背景样式啦!针对你用的ASP.NET MVC版本的Scheduler,我整理了两种实用的方法,你可以根据需求选择:

方法1:纯CSS快速实现(适合简单场景)

Kendo Scheduler已经给周末的单元格/列添加了默认的k-weekend类,我们直接通过CSS覆盖这个类的样式即可,无需修改后端代码:

/* 月份视图的周末单元格 */
.k-scheduler-month-view .k-weekend {
    background-color: #f8f9fa; /* 自定义浅灰色背景,可替换成你需要的颜色 */
}

/* 周视图/议程视图的周末列及单元格 */
.k-scheduler-agenda-view .k-weekend,
.k-scheduler-week-view .k-weekend {
    background-color: #f8f9fa;
}

这种方法简单直接,适合所有视图统一设置周末背景的场景。如果默认的k-weekend样式优先级较高,你可以在样式后加上!important强制覆盖:

.k-scheduler-month-view .k-weekend {
    background-color: #f8f9fa !important;
}

方法2:结合DataBound事件动态控制(适合复杂场景)

如果需要更灵活的控制(比如仅给特定日期的周末设置样式、根据业务逻辑动态调整),可以利用Scheduler的DataBound事件,通过JavaScript判断日期并添加自定义样式类:

第一步:修改Scheduler配置,绑定DataBound事件

在你的现有Scheduler代码中添加.Events()配置项,绑定自定义的事件处理函数:

@(Html.Kendo().Scheduler<CalenderTaskModel>()
    .Name("scheduler")
    .Footer(false)
    .Editable(false)
    .EventTemplateId("eventTemplate")
    .Timezone("Etc/UTC")
    .Views(views => {
        views.AgendaView(view => view.Title("Week"));
        views.MonthView(view => view.Selected(true).EventHeight(15).Title("Month"));
    })
    .Events(e => e.DataBound("onSchedulerDataBound")) // 添加这行绑定事件
    .Resources(resource => {
        resource.Add(m => m.ResourceID)
            .DataTextField("Text")
            .DataValueField("Value") // 补全资源配置的必要字段
            .BindTo(Model.Resources); // 假设你绑定了资源数据
    })
    .DataSource(d => d
        .Model(m => {
            m.Id(f => f.TaskID);
            m.Field(f => f.Title).DefaultValue("No title");
            m.Field(f => f.Start);
            m.Field(f => f.End);
            m.Field(f => f.ResourceID);
        })
        .Read(read => read.Action("Tasks_Read", "YourController")) // 替换成你的实际接口
    )
)

第二步:编写JavaScript事件处理函数

在页面的<script>标签中添加以下代码,判断每个单元格的日期是否为周末,并添加自定义样式类:

function onSchedulerDataBound(e) {
    var scheduler = this;
    var currentView = scheduler.view();

    // 处理月份视图
    if (currentView.name === "month") {
        var cells = currentView.element.find(".k-scheduler-content table tr td");
        cells.each(function() {
            var cellDate = scheduler.dateFromCell($(this));
            // 判断是否为周末:周日(0)或周六(6)
            if (cellDate.getDay() === 0 || cellDate.getDay() === 6) {
                $(this).addClass("custom-weekend-bg");
            }
        });
    }

    // 处理周视图/议程视图
    else if (currentView.name === "agenda" || currentView.name === "week") {
        // 给周末的表头和单元格添加样式
        var weekendColumns = currentView.element.find(".k-scheduler-table th.k-weekend");
        var weekendCells = currentView.element.find(".k-scheduler-table td.k-weekend");
        weekendColumns.addClass("custom-weekend-bg");
        weekendCells.addClass("custom-weekend-bg");
    }
}

第三步:定义自定义样式类

在CSS中添加你想要的周末背景样式:

.custom-weekend-bg {
    background-color: #e3f2fd !important; /* 自定义浅蓝色背景,可按需修改 */
}

注意事项

  • 不同版本的Kendo UI可能会有细微的类名差异,如果样式不生效,可以通过浏览器开发者工具查看周末单元格的实际类名,调整CSS选择器。
  • 如果使用了资源分组等高级功能,可能需要调整JavaScript中的单元格选择逻辑,确保选中正确的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:37:04