JQGrid / JSGrid。创建网格后添加其他行(数据库中的大量记录)
JQGrid / JSGrid. Add additional rows after the grid has been created (lot of records in the database)
我有一个查询 returns 大量数据 (json)。这需要很长时间才能将网格呈现给用户。所以我想做的是用过滤器(比如当年的记录)触发初始查询,然后构建网格。
网格已呈现给用户,他可以开始工作了。
与此同时,我触发了第二个查询(在后台)以获取所有其他记录(除当年以外的所有记录)。
现在我想将这些记录添加到已经存在的网格中。在用户不注意的情况下。
这可能吗?
我认为 JSgrid 和 JQgrid 的行为相同,但我使用 JSGrid
谢谢,迈克
只需在您的函数上设置一个延迟计时器即可。我不确定用户是否不会注意到这些变化。但我想这是一个很好的起点。
这里有一个关于如何使用 setTimeout() 的例子;
这将允许您的函数在特定时间后执行。因此,当用户加载 table 并开始工作时。您将触发另一个函数(在一定时间后)重新填充 table。我不确定您的 table 是如何填充的,因此不确定执行是否对用户不可见。
var delayInMilliseconds = 1000; //1 second
setTimeout(function() {
//your code to be executed after 1 second
}, delayInMilliseconds);`
如果是 Guriddo jqGrid,您可以先加载一小部分数据,然后使用网格完成事件将数据类型设置为本地,加载所有数据并将其放入数据参数并刷新索引。加载变量用于防止在排序分页等情况下重复加载 - 即代码仅执行一次
下面的代码and demo
var loaded = false;
$(document).ready(function () {
$("#jqGrid").jqGrid({
// url to load initially 10 records
url: 'grid.php',
datatype: "json",
....
gridComplete : function() {
// if the all the data is not loaded
if(!loaded) {
// set the datatype to local
this.p.datatype='local';
var ts = this;
$.ajax({
"url": "grid.php",
"dataType" : "json",
// instruct the server to get all the data with the same sortining
"data" : { oper: 'grid', page:1, totalrows : -1, sidx : 'CustomerID', sord : 'asc' },
success :function( resp ) {
// when loaded simple attach the response data to data array
ts.p.data = resp.rows;
// refresh the indexes
ts.refreshIndex();
// mark that the data is loaded in order no to do it again
loaded = true;
}
});
}
}
});
我有一个查询 returns 大量数据 (json)。这需要很长时间才能将网格呈现给用户。所以我想做的是用过滤器(比如当年的记录)触发初始查询,然后构建网格。
网格已呈现给用户,他可以开始工作了。
与此同时,我触发了第二个查询(在后台)以获取所有其他记录(除当年以外的所有记录)。
现在我想将这些记录添加到已经存在的网格中。在用户不注意的情况下。
这可能吗?
我认为 JSgrid 和 JQgrid 的行为相同,但我使用 JSGrid
谢谢,迈克
只需在您的函数上设置一个延迟计时器即可。我不确定用户是否不会注意到这些变化。但我想这是一个很好的起点。
这里有一个关于如何使用 setTimeout() 的例子;
这将允许您的函数在特定时间后执行。因此,当用户加载 table 并开始工作时。您将触发另一个函数(在一定时间后)重新填充 table。我不确定您的 table 是如何填充的,因此不确定执行是否对用户不可见。
var delayInMilliseconds = 1000; //1 second
setTimeout(function() {
//your code to be executed after 1 second
}, delayInMilliseconds);`
如果是 Guriddo jqGrid,您可以先加载一小部分数据,然后使用网格完成事件将数据类型设置为本地,加载所有数据并将其放入数据参数并刷新索引。加载变量用于防止在排序分页等情况下重复加载 - 即代码仅执行一次
下面的代码and demo
var loaded = false;
$(document).ready(function () {
$("#jqGrid").jqGrid({
// url to load initially 10 records
url: 'grid.php',
datatype: "json",
....
gridComplete : function() {
// if the all the data is not loaded
if(!loaded) {
// set the datatype to local
this.p.datatype='local';
var ts = this;
$.ajax({
"url": "grid.php",
"dataType" : "json",
// instruct the server to get all the data with the same sortining
"data" : { oper: 'grid', page:1, totalrows : -1, sidx : 'CustomerID', sord : 'asc' },
success :function( resp ) {
// when loaded simple attach the response data to data array
ts.p.data = resp.rows;
// refresh the indexes
ts.refreshIndex();
// mark that the data is loaded in order no to do it again
loaded = true;
}
});
}
}
});