修改后,剑道UI调度编辑弹出窗口不会关闭
本文关键字:窗口 编辑 剑道 UI 调度 修改 | 更新日期: 2023-09-27 17:51:06
我正在试用剑道UI HTML调度器。我能够通过ASP成功地从数据库读取约会。. NET MVC应用。
For Read:我正在从ASP发送JsonResult。网络控制器。
For Update:控制器正在获取一个URL JSON编码的字符串,我将其反序列化并更新数据库,并且不返回任何内容给调用者。
当打开一个事件进行编辑时,进行更改并按"保存"。控制器被调用,记录被更新,但是弹出窗口既没有关闭,调度程序也没有更新。
在Telerik网站上的HTML演示在更新时返回"callback()"并且工作良好,但是我在我的代码中缺少什么会使更改反映出来。
**view**
<script>
$("#scheduler").kendoScheduler({
// configuration //
dataSource: {
batch: true,
transport: {
read: {
url : "http://localhost/Scheduler/Appointments",
dataType: "json"
},
update: {
Type:"POST",
url: "http://localhost/Scheduler/UpdateAppointment",
dataType: "json"
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: JSON.stringify(options.models)};
}
}
},
schema: {
model: {
// my model
}
},
</script>
控制器JsonResult UpdateAppointment(字符串模型){
if (models != null)
{
char[] charsToTrim = { '[', ']' };
string model_Trimmed = models.Trim(charsToTrim);
// Deserialize
Appointment SerializedAppointment = new JavaScriptSerializer().Deserialize<Appointment>(model_Trimmed);
Models.Entities.Appointment AppointmentToUpdate = db.Appointment.Where(x => x.TaskID == SerializedAppointment.TaskID).Single();
AppointmentToUpdate.Title = SerializedAppointment.Title;
AppointmentToUpdate.Start = SerializedAppointment.Start;
AppointmentToUpdate.End = SerializedAppointment.End;
db.SaveChanges();
}
return new JsonResult() {Data=null, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
Kendo需要在参数映射中返回有效的JSON格式,因此您可以尝试:
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: JSON.stringify(options.models)};
}
return {};
}
也许这个链接也会帮助你…
(复制只是为了防止死链接)
新版本的jQuery有一个突破性的变化,影响Kendo Q1 2013版本2013.1.319
由于在服务器端正确执行更新和销毁请求的情况下服务器返回的空结果,因此会触发dataSource的错误事件,因为空结果不是有效的JSON。
使用MVC扩展时建议的解决方案是:使用最新内部构建版本2013.1.327将Update/Destroy动作的响应从仅仅序列化ModelState更改为:
return Json(ModelState.IsValid ? new object(): ModelState.ToDataSourceResult());