免费jqGrid 4.8.0 - 设置分页网格重新加载的总数

时间:2015-05-22 13:25:50

标签: jquery jqgrid free-jqgrid

由于我们的数据库(当我们处理50M记录时)的计数(*)表现不佳,我们不想返回到我们检索的每个记录片段中的记录总数。相反,我们希望没有它。我可以在jsonReader:{records:MAX_INT}中将记录总数设置为MAX_INT,但我想让它更好。

我想要做的是在网格加载时设置MAX_INT的记录(这部分我知道如何),但是并行地在后台启动一个count(*)调用,最终当真正的计数器将是检索,我想用真实计数器覆盖MAX_INT,这是真实的记录数。

如何覆盖记录计数器数量?

谢谢,

1 个答案:

答案 0 :(得分:1)

首先,它是COUNT(*)的众所周知的问题。如果需要只获得数据库某些特定表的行数,那么可以非常轻松快速地获取信息

SELECT rows
FROM sys.partitions
WHERE index_id IN (0, 1)
    AND object_id = OBJECT_ID('dbo.Tablename')

在更常见的情况下(如果数据不仅在一个分区中),则应使用SUM(rows)而不是rows。见

我认为可以以同样的方式使用sys.dm_db_partition_stats

SELECT row_count
FROM sys.dm_db_partition_stats
WHERE index_id IN (0, 1) AND object_id = OBJECT_ID('dbo.Tablename')

您可以检查数据库并测试COUNT(*)是否返回与上述SQL语句或其他一些近似变体相同的值。

独立于COUNT(*)的问题,您可以使用recordstotal定义为函数,并且不会从服务器返回任何recordstotalrecords在大多数情况下并不重要。如果使用viewrecords: true选项,它将显示在寻呼机上。您可以使用默认viewrecords: false,并且在服务器响应中设置records字段时没有问题。

服务器响应的total属性将在另一侧用于设置jqGrid的lastpage参数,该参数将用于验证“下一页”和“最后一页”按钮是否为寻呼机将被启用或不启用。你能做的是

jsonReader: {
    total: function (response) {
        return parseInt(response.page) + 1;
    }
}

或者您可以返回任何其他值,例如Number.MAX_VALUE或最大整数9007199254740992(2 53 ,请参阅the answer)。

相关问题