2012-01-18 114 views
0

当没有要查看的记录时,jqGrid没有显示“没有记录查看”消息。我在我的应用程序中非常广泛地使用了jqGrid,可变行数选择,分页和过滤。最初加载表时,它们会正确显示页面数,并显示“查看1-10个50”类型的行计数消息。如果过滤器被应用到表中,表中的数据会被正确更新(使用由PHP生成的JSON数据源),并且页面和行计数消息会被正确更新。当没有要查看的记录时,jqGrid没有显示“没有记录查看”消息

应用过滤器时根本不会返回任何行 - 当发生这种情况时,页计数和行计数消息保持设置为先前的值。

我检查我返回一个空的数据集的JSON,并从jqGrid的演示站点的JSON当没有数据匹配:

{"page":0,"total":0,"records":"0"} 

我已经张贴在一个样本http://www.analyticsseo.com/test。任何想法我做错了什么?

+0

该演示使用jqGrid 3.8(2010-09-21),jQuery 1.3.2(2009-02-19)和jQuery UI 1.7.3。此外,如果你准备演示,你应该使用非最小化版本的jqGrid - 包括'jquery.jqGrid.src.js'而不是'jquery.jqGrid.min.js'就足够了。 – Oleg 2012-01-18 16:08:05

+0

@Oleg:Drupal 6最大化jQuery v1.3.2。我很害怕但真实。 – Clive 2012-01-18 16:10:58

+0

我的问题主要是关于jqGrid版本。 3.8版现在真的很老了。此外,您可以使用'jquery.jqGrid.src.js'而不是'jquery.jqGrid.min.js'。 – Oleg 2012-01-18 16:35:19

回答

1

我不建议你现在像3.8这样的旧版本的jqGrid。你与服务器响应

{"page":0,"total":0,"records":"0"} 

主要问题可以固定如果服务器会产生

{"page":0,"total":0,"records":"0","rows":[]} 

代替。像许多其他错误的bug现在在jqGrid中修复。有许多新功能和性能改进。

顺便说一下,您的服务器部分在响应中使用了错误的Content-Type标头中的JSON数据。正确的Content-Typeapplication/json,但您的服务器使用当前text/html; charset=utf-8。你可以在Drupal 6中使用common.inc语句drupal_set_header('Content-Type: application/json');来解决这个问题。在这样的变化之后,你将能够使用更新版本的jQuery。

the answer中找到对the link的引用,其中描述了如何将jQuery升级到新版本。

+0

真棒 - 这是整理它。谢谢奥列格!我也更改了内容类型,只要我有机会对我们的json代进行必要的更改,就会升级到jqGrid 4.x。 – 2012-01-19 09:12:10

+0

@MarkB:不客气! – Oleg 2012-01-19 09:16:00