我正在开发一个包含100000条记录的MIS项目。我创建了一个编辑记录的页面,通常我使用ajax调用在'onload'事件中从数据库获取了kendo网格中的所有记录,之后我应用了一些过滤器来查看某些特定的记录/记录,但我的问题是那...
有没有办法一次性从数据库中获取所有数据并将其存储在本地,以便在我对数据应用过滤器(想要查看某些记录)时。它不会从数据库请求。它显示来自本地存储数据的数据。
答案 0 :(得分:2)
我同意@OnaBai ..如果处理大量数据,它效率不高。在第一次加载时,将花费大量时间。无论如何,您可以设置serverPaging: false
来实现这一目标。
dataSource: {
serverPaging: false,
pageSize: 20
}
当您需要像往常一样访问数据时;
$("#YourGridName").data("kendoGrid").dataSource.data()
答案 1 :(得分:0)
是的,当然,您只需定义数据源(定义传输)。如果数据尚未获取,它将调用服务器。
如果您希望将其保留在本地,而不是每次过滤或排序时都再次访问服务器,则必须明确说出来:
// This DS will reach the server only for fetching...
var fatDataSource = new kendo.data.DataSource({
transport: {
read: {
url: ActionUrls.MonitoringReport.Alerts
}
},
// Specify that we want the operations locally
serverSorting: false,
serverFiltering: false,
serverAggregates: false,
serverPaging: false,
serverGrouping: false
};
您可以使用数据执行任何操作,除非您明确调用read()方法,否则不需要访问服务器。
现在关于性能问题,我同意在某些情况下(IE抬起你的手),将整个数据库表提取到前端的想法可能会带来性能损失。但是,我不会评判你,我不知道你是在内联网还是你正在构建下一个谷歌。
我会给你一些提示(按照相关性顺序):