是否有关于处理发布的“_search”和“过滤器”值服务器端和构建数据库查询的文档或示例?

时间:2013-06-14 19:51:04

标签: jqgrid jqgrid-asp.net jqgrid-php

是否有关于处理已发布的“_search”和“过滤器”数据并使用它来查询数据库结果的示例或文档?

...谢谢

1 个答案:

答案 0 :(得分:0)

_search只是布尔值。如果_searchtrue,则应使用filters参数过滤数据,该参数的格式为the documentation中所述。

可以使用prmNames option重命名_search。例如prmNames: { search: null, nd: null }删除不需要的参数_searchnd,另一个示例prmNames: { search: "isSearching" }将默认_search参数重命名为isSearching

发布的filters参数的处理取决于您使用的许多实施细节。您使用了基于免费开源jqGrid开发的商业产品的jqgrid-asp.netjqgrid-php个标记。在这种情况下,我根本无法帮助你,因为我不知道这些产品。另外,我发现您将PHP和ASP.NET作为标记包含在内非常奇怪。在这两种情况下,实现可以完全不同。事件如果ASP.NET是您的主要平台,那么您使用的数据库访问是实现的最重要方面。三个典型选项:实体框架,LINQ to SQL和SQLCommand SqlDataReader需要完全不同的动态过滤实现。

The answer在使用Entity Framework的情况下提供了一个实现示例。使用实体框架的最大优点是可以将ObjectQuery.Where string 参数一起使用。在这种方式中,可以使用filters中的参数构造 string ,这些参数应该在SQL语句的WHERE部分中使用。您可以使用大多数相同的方法来构建带参数的SQLCommand命令。

另一方面,LINQ to SQL没有可能,必须使用更复杂的方法,如here或使用一些库(如this one)。

我真正建议您考虑使用loadonce: true 。如果您需要在网格中显示的数据集包含大约一百(甚至一千)行,那么将所有数据返回到jqGrid可能更有效(数据应该正确排序)并使用loadonce: true实现本地过滤和数据分页。它可以简化您的服务器代码,从用户的角度来看,网格可能更负责任,因为现在JavaScript引擎足够快,jqGrid的本地过滤可以更快地向服务器发送请求和使用服务器端过滤。 / p>