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

Telerik ASP.NET Core Scheduler自定义按钮报错问题咨询

问题分析与解决方案

核心结论

你使用的Telerik Kendo UI for ASP.NET Core 2022.3.913版本中,Scheduler组件的SchedulerToolbarFactory确实没有Custom()扩展方法——这个方法是在2023.1.117版本才正式引入的,所以当前报错属于版本兼容性问题,并非配置遗漏。

旧版本替代实现方案(适用于2022.3.913)

在不升级版本的前提下,可通过以下两种方式给Scheduler工具栏添加自定义按钮:

方式1:客户端事件动态插入按钮

利用Scheduler的DataBound事件,在组件渲染完成后手动向工具栏DOM中添加按钮:

@(Html.Kendo().Scheduler<Bron.Models.Views.SchedulerModel>()
    .Name("scheduler")
    .Date(DateTime.Now.Date)
    .StartTime(DateTime.Now.Date)
    .MajorTick(60)
    // 绑定数据完成事件
    .Events(e => e.DataBound("onSchedulerDataBound"))
    // 其他原有配置...
    .Timezone("Etc/UTC")
    .Group(group => group.Resources("Locations", "Places").Orientation(SchedulerGroupOrientation.Vertical))
    // 剩余配置省略...
)

<script>
function onSchedulerDataBound() {
    // 获取工具栏容器
    const toolbar = $(".k-scheduler-toolbar");
    // 创建自定义按钮
    const customBtn = $("<button class='k-button my-custom-button'>我的自定义按钮</button>");
    // 绑定点击逻辑
    customBtn.on("click", function() {
        // 这里替换为你的按钮功能
        console.log("自定义按钮触发");
    });
    // 将按钮插入工具栏末尾
    toolbar.append(customBtn);
}
</script>

方式2:自定义完整工具栏模板

通过.ToolbarTemplate()完全重写工具栏,按需保留默认控件并添加自定义按钮:

@(Html.Kendo().Scheduler<Bron.Models.Views.SchedulerModel>()
    .Name("scheduler")
    .Date(DateTime.Now.Date)
    .StartTime(DateTime.Now.Date)
    .MajorTick(60)
    // 自定义工具栏模板
    .ToolbarTemplate(@<text>
        <div class="k-scheduler-toolbar">
            <!-- 保留默认按钮(按需选择) -->
            @(Html.Kendo().Button().Name("todayBtn").Text("今天").HtmlAttributes(new { @class = "k-button" }).Events(e => e.Click("function(){ $('#scheduler').data('kendoScheduler').today(); }")))
            @(Html.Kendo().Button().Name("prevBtn").Icon("chevron-left").HtmlAttributes(new { @class = "k-button" }).Events(e => e.Click("function(){ $('#scheduler').data('kendoScheduler').previous(); }")))
            @(Html.Kendo().Button().Name("nextBtn").Icon("chevron-right").HtmlAttributes(new { @class = "k-button" }).Events(e => e.Click("function(){ $('#scheduler').data('kendoScheduler').next(); }")))
            
            <!-- 自定义按钮 -->
            <button class="k-button my-custom-button">我的自定义按钮</button>
            
            <!-- 视图切换下拉框(按需保留) -->
            @(Html.Kendo().DropDownList()
                .Name("viewSelector")
                .DataTextField("Text")
                .DataValueField("Value")
                .BindTo(new List<SelectListItem> {
                    new SelectListItem { Text = "日视图", Value = "day" },
                    new SelectListItem { Text = "周视图", Value = "week" },
                    new SelectListItem { Text = "月视图", Value = "month" }
                })
                .Events(e => e.Change("function(e){ $('#scheduler').data('kendoScheduler').view(e.sender.value()); }"))
            )
        </div>
    </text>)
    // 其他原有配置...
    .Timezone("Etc/UTC")
    .Group(group => group.Resources("Locations", "Places").Orientation(SchedulerGroupOrientation.Vertical))
    // 剩余配置省略...
)

升级版本后的验证要点

如果后续升级到2023.1.117及以上版本,使用toolbar.Custom()仍报错,需检查:

  • 项目已正确引用对应版本的Telerik Kendo UI for ASP.NET Core NuGet包
  • 视图页面引入的Kendo脚本、样式版本与NuGet包版本完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:44:51