c# - 无法填充 Kendo Scheduler

标签 c# javascript jquery asp.net-mvc-3 kendo-ui

我正在尝试在我的网站中实现新的剑道调度程序。我可能只是错过了一些东西,但我无法让调度程序显示约会。 这是我的看法

@model OpenRoad.Web.Areas.Team.Models.AppointmentListModel
@using Combres.Mvc
@{
    ViewBag.Title = "Calendar";
    Layout = "~/Views/Shared/_LayoutSingleColumn.cshtml";
}
@section scripts {
   <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"> </script>
    <script src="@Url.Content("~/Scripts/kendo/kendo.all.min.js")"></script>
    <script>
        $(function () {
            $("#scheduler").kendoScheduler({
                date: new Date("2013/6/13"),
                startTime: new Date("2013/6/13 07:00 AM"),
                height: 600,
                views: [
                "day",
                    { type: "week", selected: true },
                    "month",
                    "agenda"
                ],
                timezone: "Etc/UTC",
                dataSource: {
                    batch: true,
                    transport: {
                        read: {
                            url: "/Team/Calendar/PopulateCalendar", 
                            dataType: "jsonp"
                        },
                        update: {
                            url: "/Team/Calendar/UpdateAppointment",
                            dataType: "jsonp"
                        },
                        create: {
                            url: "/Team/Calendar/Index",
                            dataType: "jsonp"
                        },
                        destroy: {
                            url: "http://demos.kendoui.com/service/tasks/destroy",
                            dataType: "jsonp"
                        },
                        parameterMap: function (options, operation) {
                            if (operation !== "read" && options.models) {
                                return { models: kendo.stringify(options.models) };
                            }
                        }
                    },
                    schema: {
                        model: {
                            id: "taskId",
                            fields: {
                                taskId: { from: "TaskID", type: "number" },
                                title: { from: "Title", defaultValue: "No title", validation: { required: true } },
                                start: { type: "date", from: "Start" },
                                end: { type: "date", from: "End" },
                                startTimezone: { from: "StartTimezone" },
                                endTimezone: { from: "EndTimezone" },
                                description: { from: "Description" },
                                recurrenceId: { from: "RecurrenceID" },
                                recurrenceRule: { from: "RecurrenceRule" },
                                recurrenceException: { from: "RecurrenceException" },
                                ownerId: { from: "OwnerID", defaultValue: 1 },
                                isAllDay: { type: "boolean", from: "IsAllDay" }
                            }
                        }
                    },
                    filter: {
                        logic: "or",
                        filters: [
                            { field: "ownerId", operator: "eq", value: 1 },
                            { field: "ownerId", operator: "eq", value: 2 }
                        ]
                    }
                },
                resources: [
                    {
                        field: "ownerId",
                        title: "Owner",
                        dataSource: [
                            { text: "Alex", value: 1, color: "#f8a398" },
                            { text: "Bob", value: 2, color: "#51a0ed" },
                            { text: "Charlie", value: 3, color: "#56ca85" }
                        ]
                    }
                ]
            });

            $("#people :checkbox").change(function (e) {
                var checked = $.map($("#people :checked"), function (checkbox) {
                    return parseInt($(checkbox).val());
                });

                var filter = {
                    logic: "or",
                    filters: $.map(checked, function (value) {
                        return {
                            operator: "eq",
                            field: "ownerId",
                            value: value
                        };
                    })
                };

                var scheduler = $("#scheduler").data("kendoScheduler");

                scheduler.dataSource.filter(filter);
            });
        });
</script>
    }
@section styles{
     <link href="@Url.Content("~/Content/kendo/kendo.common.min.css")" rel="stylesheet" />
    <link href="@Url.Content("~/Content/kendo/kendo.default.min.css")" rel="stylesheet" />
    }



    <div id="example" class="k-content">

    <div id="scheduler"></div>
</div>

这是我正在使用的模型

 public class AppointmentListModel
    {
        public int TotalItemCount { get; set; }
        public PagedList<Appointment> ListItems { get; set; }
        public List<Calendar> CalendarItems { get; set; }
    }

  public class Calendar
    {
        public int TaskId { get; set; }
        public int UserId { get; set; }
        public string Title { get; set; }
        [DisplayFormat(ConvertEmptyStringToNull = false)]
        public string Description { get; set; }
        [DisplayFormat(ConvertEmptyStringToNull = false)]
        public string StartTimezone { get; set; }
        public DateTime Start { get; set; }
        public DateTime End { get; set; }
        [DisplayFormat(ConvertEmptyStringToNull = false)]
        public string EndTimezone { get; set; }
        [DisplayFormat(ConvertEmptyStringToNull = false)]
        public string RecurranceRule { get; set; }
        public int? RecurranceId { get; set; }
        [DisplayFormat(ConvertEmptyStringToNull = false)]
        public string RecurranceException { get; set; }
        public bool IsAllDay { get; set; }
    }

这是我用来设置读取数据源的函数

public ActionResult PopulateCalendar()
        {
            using (var entities = new OpenRoad.Data.Repository.OpenRoadEntities())
            {
                var model = new Models.AppointmentListModel();

                var appointments = (from e in entities.Appointments
                                    where e.UserId == OpenRoad.Web.Session.UserId

                                    select new Models.Calendar
                                    {
                                        TaskId = e.AppointmentId,
                                        UserId = e.UserId ?? '1',
                                        Title = e.Subject,
                                        Start = e.StartTimeUtc ?? DateTime.Now,
                                        End = e.EndTimeUtc ?? DateTime.Now,
                                        IsAllDay = false

                                    }).OrderBy(o => o.Start);
                model.CalendarItems = new List<Models.Calendar>(appointments);
                return Json(model, JsonRequestBehavior.AllowGet);
            }

        }
    }

如果有人可以提供帮助,我将非常感激。

最佳答案

您必须将事件绑定(bind)到当前请求。将参数 [DataSourceRequest] DataSourceRequest 请求添加到您的方法中,并最后将其绑定(bind)到请求。请参阅以下内容:

public ActionResult PopulateCalendar()
{
  // Add code

  return this.Json(model.ToDataSourceResult(request));
}

您必须导入 Kendo.Mvc.Extensions;

关于c# - 无法填充 Kendo Scheduler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18061676/

相关文章:

javascript - 如何在 Angular JS 中的嵌套 ul li ul li 列表项中重复数据?

javascript - 如何在 jquery 中获取鼠标落下时范围 slider 的精确值

javascript - 在 Angular 中附加 YouTube 视频 URL 时显示 ERR_CERT_AUTHORITY_INVALID 错误

javascript - 使用 Grails findByAll() 数组进行 jQuery 自动完成

jquery - 使用 jquery 处理嵌套/层次类别中的复选框

c# - C# 中的异步方法不是异步的?

c# - Entity Framework ORA-00932 : inconsistent datatypes: “' expected CLOB got CHAR”

c# - 使用 C# 访问二维数组时出错

javascript - jQuery,隐藏段落

c# - EF 中的常量导致异常