Kendo ui 无法将数据绑定到剑道计划程序
我有一个剑道调度程序,它显示在视图中,但没有任何数据 视图上的计划程序:Kendo ui 无法将数据绑定到剑道计划程序,kendo-ui,kendo-asp.net-mvc,kendo-scheduler,Kendo Ui,Kendo Asp.net Mvc,Kendo Scheduler,我有一个剑道调度程序,它显示在视图中,但没有任何数据 视图上的计划程序: @(Html.Kendo().Scheduler<ProjName.Models.ScheduleInspectionModel>() .Name("scheduler") .Views(views => { views.DayView(); views.WorkWeekView(); views.WeekView();
@(Html.Kendo().Scheduler<ProjName.Models.ScheduleInspectionModel>()
.Name("scheduler")
.Views(views =>
{
views.DayView();
views.WorkWeekView();
views.WeekView();
views.MonthView(mv => mv.Selected(true));
views.AgendaView();
})
.Timezone("Etc/UTC")
.DataSource(d => d
.Read("ControllerName", "GetScheduleInspections")
)
)
@(Html.Kendo().Scheduler())
.Name(“调度程序”)
.视图(视图=>
{
views.DayView();
views.WorkWeekView();
views.WeekView();
views.MonthView(mv=>mv.Selected(true));
views.AgendaView();
})
.时区(“Etc/UTC”)
.DataSource(d=>d
.Read(“ControllerName”、“GetScheduleInspections”)
)
)
数据源调用以下控制器方法:
public ActionResult GetScheduleInspections([DataSourceRequest]DataSourceRequest request)
{
ScheduleInspectionModel sim = new ScheduleInspectionModel();
var gsio = sim.getScheduleInspections();
List<ScheduleInspectionModel> list = new List<ScheduleInspectionModel>();
if (gsio.scheduleinspections != null)
{
foreach (wsScheduleInspection.scheduleInspectionOutput scheduleInspection in gsio.scheduleinspections)
{
ScheduleInspectionModel sim2 = new ScheduleInspectionModel
{
GlobalEquipConditionId = scheduleInspection.globalEquipmentCondition.id,
Description = scheduleInspection.globalEquipmentCondition.code,
Start = DateTime.Now,
End = DateTime.Now.AddHours(2),
Title = scheduleInspection.globalEquipmentCondition.code,
IsAllDay = true
};
list.Add(sim2);
}
}
return Json(list.ToDataSourceResult(request));
}
公共操作结果GetScheduleInspections([DataSourceRequest]DataSourceRequest请求)
{
ScheduleInspectionModel sim=新ScheduleInspectionModel();
var gsio=sim.getScheduleInspections();
列表=新列表();
if(gsio.scheduleinspections!=null)
{
foreach(wsScheduleInspection.scheduleInspection在gsio.scheduleinspections中输出scheduleInspection)
{
ScheduleInspectionModel sim2=新ScheduleInspectionModel
{
GlobalEquipConditionId=scheduleInspection.globalEquipmentCondition.id,
Description=scheduleInspection.globalEquipmentCondition.code,
开始=日期时间。现在,
End=DateTime.Now.AddHours(2),
标题=scheduleInspection.globalEquipmentCondition.code,
IsAllDay=真
};
列表。添加(sim2);
}
}
返回Json(list.ToDataSourceResult(request));
}
但此方法永远不会运行,尽管它位于Scheduler Datasource属性上。它应该运行该方法并返回检查列表。我不知道为什么这个方法没有被击中。例如,对于剑道网格,数据源读取上的方法会在页面加载后立即命中。是的,调度程序读取会在页面加载后立即调用。但它可能没有像预期的那样以正确的格式获取数据。因此它无法绑定数据。如果您可以检查这些修改: 1) 在调度程序的“数据源”中定义“模型”,如本文中所定义 2) 此外,action方法还应返回“MyModel”类的对象(定义了调度器的模型)
不是“ScheduleInspectionModel”类。请尝试确保您的定义包含这两项,因为我认为它们是必需的
.Date(new DateTime(2013, 6, 13))
.StartTime(new DateTime(2013, 6, 13, 7, 00, 00))
编辑
我能够使用以下代码:
型号
// NOTE: It's important that your model class implements ISchedulerEvent
public class TaskViewModel : ISchedulerEvent
{
public string Title { get; set; }
public string Description { get; set; }
public bool IsAllDay { get; set; }
public DateTime Start { get; set; }
public DateTime End { get; set; }
public string StartTimezone { get; set; }
public string EndTimezone { get; set; }
public string RecurrenceRule { get; set; }
public string RecurrenceException { get; set; }
}
SchedulerController.cs
public class SchedulerController : Controller
{
// GET: Scheduler
public ActionResult Index()
{
var model = new SchedulerViewModel();
// In this case, it doesn't matter what this model is really since we're using AJAX binding
return View(model);
}
// I usually have my binding methods for Kendo use HttpPost
[HttpPost]
public ActionResult GetData([DataSourceRequest] DataSourceRequest request)
{
var data = new List<TaskViewModel>
{
new TaskViewModel
{
Start = new DateTime(2014, 12, 1, 8, 0, 0),
End = new DateTime(2014, 12, 1, 17, 0, 0),
Title = "Task 1"
}
};
return Json(data.ToDataSourceResult(request));
}
}
公共类调度控制器:控制器
{
//获取:调度程序
公共行动结果索引()
{
var模型=新SchedulerViewModel();
//在本例中,这个模型实际上是什么并不重要,因为我们使用的是AJAX绑定
返回视图(模型);
}
//我通常有我的剑道绑定方法使用HttpPost
[HttpPost]
公共操作结果GetData([DataSourceRequest]DataSourceRequest请求)
{
var数据=新列表
{
新TaskViewModel
{
开始=新的日期时间(2014、12、1、8、0、0),
结束=新的日期时间(2014、12、1、17、0、0),
Title=“任务1”
}
};
返回Json(data.ToDataSourceResult(request));
}
}
Index.cshtml(查看)
@(Html.Kendo().Scheduler())
.Name(“调度程序”)
.视图(视图=>
{
views.DayView();
views.WorkWeekView();
views.WeekView();
views.MonthView(mv=>mv.Selected(true));
views.AgendaView();
})
.时区(“Etc/UTC”)
.DataSource(d=>d
.Read(“获取数据”、“调度程序”)
))
如果这对您不起作用,我会确保您的版本(剑道、jQuery等)是正确的。希望这有帮助。谢谢你的回答。我试过了,但没有改变。我不认为他们是必需的。。。还有其他建议吗?试着用
[HttpPost]
标记控制器方法?或者将你的返回值改为AllowGett也不是这样,这个方法仍然没有被称为DHMM,我将不得不在午餐或今晚尝试一些东西,因为我在白天的工作中不使用剑道。嗨!从哪里可以得到IsScheduleEvent?
@(Html.Kendo().Scheduler<TaskViewModel>()
.Name("scheduler")
.Views(views =>
{
views.DayView();
views.WorkWeekView();
views.WeekView();
views.MonthView(mv => mv.Selected(true));
views.AgendaView();
})
.Timezone("Etc/UTC")
.DataSource(d => d
.Read("GetData", "Scheduler")
))