Asp.net mvc 剑道UI调度程序:自定义查看和编辑行为

Asp.net mvc 剑道UI调度程序:自定义查看和编辑行为,asp.net-mvc,kendo-ui,kendo-scheduler,kendo-ui-mvc,Asp.net Mvc,Kendo Ui,Kendo Scheduler,Kendo Ui Mvc,我已经研究这几天了,在论坛上到处搜索。无论是堆栈溢出,还是Telerik自己的论坛,都无济于事 我正在MVC应用程序中使用剑道UI调度程序组件。下面是创建调度程序的index.cshtml的一部分 @(Html.Kendo().Scheduler<TaskViewModel>() .Name("scheduler") .Views(views => { views.CustomView("ThreeDayView"); })

我已经研究这几天了,在论坛上到处搜索。无论是堆栈溢出,还是Telerik自己的论坛,都无济于事

我正在MVC应用程序中使用剑道UI调度程序组件。下面是创建调度程序的index.cshtml的一部分

@(Html.Kendo().Scheduler<TaskViewModel>()
            .Name("scheduler")
            .Views(views => { views.CustomView("ThreeDayView"); })
            .DataSource(d => d
                .Read("Read", "Home")
                .Create("Create", "Home")
                .Destroy("Destroy", "Home")
                .Update("Update", "Home")
            )
    )
@(Html.Kendo().Scheduler())
.Name(“调度程序”)
.Views(视图=>{Views.CustomView(“ThreeDayView”);})
.DataSource(d=>d
.Read(“Read”,“Home”)
.创建(“创建”、“主页”)
.摧毁(“摧毁”,“家园”)
.更新(“更新”、“主页”)
)
)
在这个调度程序中,我使用下面定义的自定义视图。这可以使调度程序一次只显示3天。但是,第二天和前一天的功能不起作用。我假设我必须覆盖上一天和下一天的功能,但不确定如何覆盖。我期望的是视图一次前进1天(即4月16-18日移动到4月17-19日)

此外,我想添加自定义编辑功能。我知道这听起来有点奇怪,但我不希望任何人能够编辑、添加或删除任何内容。只需使用调度程序作为一种显示,然后在单击任务/事件时执行一些操作,我想做一些其他的事情,然后打开编辑窗口(即设置一些变量),我认为这是通过覆盖下面jscript中的可编辑函数来完成的,但同样不确定如何完成。非常感谢任何帮助和/或示例

var ThreeDayView = kendo.ui.MultiDayView.extend({
            options: {
                selectedDateFormat: "{0:D} - {1:D}"
            },

            name: "ThreeDayView",

            calculateDateRange: function () {
                //create a range of dates to be shown within the view
                var selectedDate = this.options.date,
                    start = kendo.date.dayOfWeek(selectedDate, this.calendarInfo().firstDay, -1),
                    idx, length,
                    dates = [];

                for (idx = 0, length = 3; idx < length; idx++) {
                    dates.push(start);
                    start = kendo.date.nextDay(start);
                }

                this._render(dates);
            }
        });
var ThreeDayView=kendo.ui.MultiDayView.extend({
选项:{
selectedDateFormat:“{0:D}-{1:D}”
},
名称:“三天视图”,
CalculatedTerange:函数(){
//创建要在视图中显示的日期范围
var selectedDate=this.options.date,
start=kendo.date.dayOfWeek(selectedDate,this.calendarInfo().firstDay,-1),
idx,长度,
日期=[];
对于(idx=0,长度=3;idx
从telerik董事会得到了这个答案,我想我会和大家分享一下,以防其他人遇到这个问题

为了使自定义视图按照您所描述的方式运行,下一个日期 方法以返回开始日期的下一个。阿尔索 对于当前的实现,视图总是从第一个开始 一周中的某一天,这与您正在查看的行为不符 用于:

var ThreeDayView=kendo.ui.MultiDayView.extend({
下一个日期:函数(){
返回kendo.date.nextDay(this.startDate());
},
选项:{
selectedDateFormat:“{0:D}-{1:D}”
},
名称:“三天视图”,
CalculatedTerange:函数(){
//创建要在视图中显示的日期范围
var//selectedDate=this.options.date,
//start=kendo.date.dayOfWeek(selectedDate,this.calendarInfo().firstDay,-1),
开始=this.options.date,
idx,长度,
日期=[];
对于(idx=0,长度=3;idx
关于编辑功能。这将更容易使用 计划程序编辑事件,以防止弹出窗口显示并添加 自定义逻辑

@(Html.Kendo().Scheduler<TaskViewModel>()
            .Name("scheduler")
            .Events(events => events.Edit("edit"))
 )

<script type="text/javascript">
    function edit(e) {
        e.preventDefault();
        // do something here;
    }
</script>
@(Html.Kendo().Scheduler())
.Name(“调度程序”)
.Events(Events=>Events.Edit(“编辑”))
)
功能编辑(e){
e、 预防默认值();
//在这里做点什么;
}
问候,, 罗森


尽管我已经实现了这个自定义视图,但它本身并没有显示我的事件。为什么会这样?@esquare::面对同样的问题。你找到解决办法了吗?
@(Html.Kendo().Scheduler<TaskViewModel>()
            .Name("scheduler")
            .Events(events => events.Edit("edit"))
 )

<script type="text/javascript">
    function edit(e) {
        e.preventDefault();
        // do something here;
    }
</script>