我需要呈现大量的行数据(即。数百万行)在一个网格中使用JavaScript传递给用户。

用户不应该一次只查看页面或有限数量的数据。

相反,应该显示所有数据都是可用的。

不同于一次性下载所有数据,小块数据是在用户访问它们时下载的。通过滚动网格)。

行不会通过前端进行编辑,因此只读网格是可以接受的。

对于这种无缝分页,存在哪些用JavaScript编写的数据网格?


当前回答

我能想到的最佳方法是在每次滚动或滚动结束前以json格式加载数据块。Json可以很容易地转换为对象,因此可以很容易地不引人注目地构造表行

其他回答

我可以非常肯定地说,您确实不需要向用户显示数百万行数据。

世界上没有任何用户能够理解或管理该数据集,因此即使您在技术上设法实现了它,也无法为该用户解决任何已知问题。

相反,我将关注用户为什么想要查看数据。用户不希望看到数据只是为了看到数据,通常会有一个问题被提出。如果你专注于回答这些问题,那么你就会更接近解决实际问题的方法。

看看dGrid:

https://dgrid.io/

我同意用户永远不需要同时查看数百万行数据,但是dGrid可以快速显示它们(一次显示一整屏)。

不要把海洋烧开来泡一杯茶。

我建议sigma网格,sigma网格有嵌入分页功能,可以支持数百万行。而且,您可能需要远程分页来完成此操作。 查看演示 http://www.sigmawidgets.com/products/sigma_grid2/demos/example_master_details.html

在我看来,最好的网格如下:

Flexigrid: http://flexigrid.info/ jQuery网格:http://www.trirand.com/blog/ jqGridView: http://plugins.jquery.com/project/jqGridView jqxGrid: https://www.jqwidgets.com/ 英格丽德:http://reconstrukt.com/ingrid/ SlickGrid http://github.com/mleibman/SlickGrid

datatable http://www.datatables.net/index

屏蔽 http://demos.shieldui.com/web/grid-virtualization/performance-1mil-rows 智能电网 https://www.htmlelements.com/demos/grid/overview/

我最好的3个选择是jqGrid, jqxGrid和DataTables。它们可以处理数千行数据并支持虚拟化。

(免责声明:我是SlickGrid的作者)

更新 这已经在SlickGrid中实现了。

有关如何使SlickGrid工作于大量行的讨论,请参阅http://github.com/mleibman/SlickGrid/issues#issue/22。

The problem is that SlickGrid does not virtualize the scrollbar itself - the scrollable area's height is set to the total height of all the rows. The rows are still being added and removed as the user is scrolling, but the scrolling itself is done by the browser. That allows it to be very fast yet smooth (onscroll events are notoriously slow). The caveat is that there are bugs/limits in the browsers' CSS engines that limit the potential height of an element. For IE, that happens to be 0x123456 or 1193046 pixels. For other browsers it is higher.

在“large -fix”分支中有一个实验性的解决方案,通过将可滚动区域的“页面”设置为1M像素的高度,然后在这些页面中使用相对定位,可以显著提高该限制。由于CSS引擎中的高度限制似乎不同,而且明显低于实际的布局引擎,这给了我们一个更高的上限。

我仍在寻找一种方法,在不放弃SlickGrid目前相对于其他实现的性能优势的情况下实现无限行的数量。

吕迪格,你能详细解释一下你是怎么解决的吗?