我有一个应用程序列出了任何一天发生的事件。应用程序显示一个 DateTimePicker 并且用户选择一个日期。如果当天有事件,则会显示一个网格以列出找到的记录。
如果在那之后用户选择了另一个日期,我必须销毁以前的网格以支持下一个网格,如果为这个新选择的日期找到事件记录,则可能需要出现下一个网格。
执行以下操作是不够的,我需要知道我缺少什么才能获得所需的行为:
var grid = $("#grid").data("kendoGrid");
grid.destroy();
我有一个应用程序列出了任何一天发生的事件。应用程序显示一个 DateTimePicker 并且用户选择一个日期。如果当天有事件,则会显示一个网格以列出找到的记录。
如果在那之后用户选择了另一个日期,我必须销毁以前的网格以支持下一个网格,如果为这个新选择的日期找到事件记录,则可能需要出现下一个网格。
执行以下操作是不够的,我需要知道我缺少什么才能获得所需的行为:
var grid = $("#grid").data("kendoGrid");
grid.destroy();
您不需要销毁 Grid 和 DataSource。相反,捕获日期的任何更改并调用DataSource.read
.
脚步:
HTML:
<input id="date"/>
JavaScript:
var evDate = $("#date").kendoDateTimePicker({
value : new Date(),
change: function () {
ds.read();
}
}).data("kendoDateTimePicker");
url
处理请求是在请求GetEvents
中接收一个称为date
事件的日期的参数。例子GetEvents?date=Mon+Jul+15+2013+19%3A44%3A55+GMT%2B0200+(CEST)
JavaScript:
var ds = new kendo.data.DataSource({
transport: {
read: {
url : "GetEvents.php",
data: function () {
return { "date": evDate.value() }
}
}
},
schema : {
model: {
id : "id",
fields: {
event: { type: "string" },
date : { type: "date" }
}
}
},
pageSize : 10
});
JavaScript
var grid = $("#grid").kendoGrid({
dataSource: ds,
editable : false,
pageable : true,
columns : [
{ field: "id", width: 60, title: "#" },
{ field: "date", width: 140, title: "Date", format: "{0:yyyy-MM-dd HH:mm}" },
{ field: "event", width: 400 }
]
}).data("kendoGrid");
所以诀窍是change
在 : 中定义一个事件处理程序DateTimePicker
:每次更改日期时,它都会触发一个change
事件,您调用grid.read()
.
Gridtransport.read
定义为参数 ( transport.read.data
)date
加上从 读取的值DateTimePicker
。
根据http ://docs.kendoui.com/api/web/grid#methods-destroy ,这应该从网格中删除所有事件处理程序等。
之后,您只需将其从 DOM 中删除,即
$("#grid").remove();
http://jsfiddle.net/giltnerj0/JFy2C/