Jqgrid检索所有数据,但有奇怪的行为

时间:2018-05-16 09:05:58

标签: javascript jquery jqgrid

在jqgrid中,我使用这部分代码从我的jqgrid表中获取所有数据:

var allRowsInGrid = $('#table_outgoing_calls_report').jqGrid('getGridParam','data');

当我在console.log allRowsInGrid时,它显示所有数据并显示表数据计数的实际长度。但后来我尝试使用这个数组(allRowsInGrid)它只显示我在屏幕上看到的数据。此外,如果我尝试console.log allRowsInGrid.length,它会显示我看到的数据长度。 我使用json数据类型和loadonce:true。尝试了一切,但没有任何作用。 这段代码:

 var allRowsInGrid = $('#table_outgoing_calls_report').jqGrid('getGridParam','data');
        console.log(allRowsInGrid);
        console.log(allRowsInGrid.length);

显示了这个: enter image description here

有谁知道怎么可能?

1 个答案:

答案 0 :(得分:2)

问题不在于你做了什么,而在 你使用' getGridParam',&#39 ;数据&#39 ;.在数据首先从服务器加载后,您可以使用数据。您可以在loadComplete内部或beforeProcessing回调内部使用。我建议您另外阅读the old answer,其中介绍了loadCompletegridComplete之间的差异。在大多数情况下,gridComplete并不是一个好的选择。

此外,loadComplete不仅会在服务器首次加载之后被称为。稍后将在每次本地排序,分页和过滤/搜索时调用它。如果在从服务器加载数据后需要执行一些操作,则beforeProcessing回调是好的。它包含从服务器返回的完整数据,然后将由jqGrid处理数据。例如,可以修改或扩展beforeProcessing回调中的数据,jqGrid将看到修改后的数据,就好像它是从服务器返回的一样。

还有一个选项 - 将一些代码放在loadComplete if ($(this).jqGrid("getGridParam", "datatype") !== "local") { ... }内。它允许在处理从服务器加载的数据并显示第一页后执行某些操作