是否有关于处理已发布的“_search”和“过滤器”数据并使用它来查询数据库结果的示例或文档?
...谢谢
答案 0 :(得分:0)
值_search
只是布尔值。如果_search
为true
,则应使用filters
参数过滤数据,该参数的格式为the documentation中所述。
可以使用prmNames
option重命名_search
。例如prmNames: { search: null, nd: null }
删除不需要的参数_search
和nd
,另一个示例prmNames: { search: "isSearching" }
将默认_search
参数重命名为isSearching
。
发布的filters
参数的处理取决于您使用的许多实施细节。您使用了基于免费开源jqGrid开发的商业产品的jqgrid-asp.net和jqgrid-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>