2011-05-04 69 views
0

我需要表示包含有关某些测试及其结果数据的表。代表动态过滤表

每个测试有超过100K个测试和几个结果。
它需要显示为设备所做的测试结果。
一个想法是从服务器检索数据, 使用jqGrid表示它。

-------------------------- 
device     | 
-------------------------- 
    | version1 |version2| 
testA| failed | Passed | 
testB|...  | ... | 
.      | 
.      | 
.      | 
-------------------------| 

以下哪种方法是动态检索和表示数据的最佳方式,为什么? :

  1. 从服务器检索所有数据并使用jquery和javascript进行过滤。

  2. 从服务器中检索过滤的数据并仅表示它。

+0

您应该明白,在JavaScript中对数据进行排序和过滤要比在基于SQL的数据库的本机代码中缓慢得多。所以基于服务器的排序,分页和数据过滤在大数据集情况下更好。特别要小心的是,您应该考虑数据过滤的不同方式或显示结果(如图表,管道等)的其他方式。只是为了显示数千行(甚至数十万行)的数据有**没有意义**。你应该给用户工具**来分析**(例如过滤)测试。 – Oleg 2011-05-04 18:28:29

+0

如果你在服务器端使用ASP.NET,你可以找到服务器代码实现服务器端排序,分页和过滤的例子[这里](http://stackoverflow.com/questions/5500805/asp-net-mvc -2-0的实现 - 的 - 搜索 - 在-的jqGrid/5501644#5501644)。答案包括可以下载的Visual Studio项目。 – Oleg 2011-05-04 19:43:50

回答

0

回答这个问题并不像你想要的那样黑/白。 100k +记录是一个大型数据集, ,无论使用何种工具来显示它(...以及人类有用的理解它的能力)。用户可以处理分页(在客户端还是服务器上),还是需要一次显示所有数据?如何以及何时需要过滤数据以使该工具对用户有用?一些注意事项:

  • JavaScript是健壮的,但冗长的DOM更新显示大集简单地会征税一些旧的浏览器(特别是IE6),并导致它们锁定。你应该知道你的用户基 - 如果他们主要是在较新的浏览器上,那么这不会成为一个问题。
  • jqGrid有演示12k records (Advanced>>Big Sets)。注意他们没有加载整个事情。
  • Minimize DOM updates。将数据过滤到内存中,然后写入一次。
  • 包括“加载”动画,DOM阻止,按钮禁用等的UI将有助于阻止来自不耐烦的用户的重复服务器/过滤器请求,这些用户可能会在尝试使用这些Web应用程序时(或他们自己的浏览器)数据集。
  • 尽量减少用于设置数据样式的数量(交替的行类,滚动时的行高亮等等)。依靠CSS或禁用jQuery插件中的部分功能。这将有助于显示速度。
0

总是得到过滤后的数据:通过数据库处理

  1. 更少的行(如果索引正确)表示分贝将更好地扩展。
  2. 较少的数据通过网络发送意味着它将扩展更好
  3. 较少的数据在客户端上被解析将增加感知性能
  4. 较少的数据在客户端会减少内存占用

如果您的网格正在进行分页,那么您只需要一次检索记录的分页。

祝你好运。

0

我认为100K记录是一个很大的转移,也可能是浏览器处理太多。
想象一下浏览器必须以HTML格式获取的KB。
我没有关于您需要添加到此页面的过滤器的种类的信息,但基于这100.000条记录总大小我敢肯定你应该在服务器端上过滤和分页。用户几乎不可能同时检查多条记录。

无论如何,我建议你检查网络使用成本和服务器端和客户端的可用处理能力来决定它。
然而,在互联网上有关于这个标准的文章非常多。