jqGrid multipleGroup向服务器发送查询

时间:2012-10-18 05:47:31

标签: jqgrid

我有一个带有以下寻呼机的jqGrid

.navGrid('#pager-mm',{add:false,edit:false,del:false,search:true,view:true},
 {},{},{},
 {multipleSearch:true,multipleGroup:true,showQuery: true},
 {})

当我构建具有嵌套AND和OR分组的复杂查询时,jqGrid会在客户端将字符串构建为正确的查询。我不想在我的服务器上重建相同的查询来编写额外的代码,而是希望将正确构建的客户端查询作为字符串发送到服务器。然而,

beforeSumbit:function()
我搜索时没有触发

。如何将此自定义字符串发送到我的服务器?

1 个答案:

答案 0 :(得分:2)

我不完全明白你真正想要的是什么。默认情况下,过滤器将作为filters参数发送到服务器。不过,您可以使用onSearch回调来访问搜索过滤器。你可以使用

var filters = $(this).jqGrid("getGridParam", "postData").filters;

获取filters的{​​{1}}属性。

更新:我永远不会信任在客户端创建的SQL语句片段。如果您使用自动允许的服务器代码中从客户端发送的SQL片段SQL Injection。如果安全性在您的应用程序中起作用,则不应使用jqGrid创建的SQL语句。

尽管如果您的问题具有纯粹的理论性质,您可以使用搜索过滤器的postData方法获取搜索对话框中显示的SQL语句。相应的代码可能如下所示

toSQLString

您将找到相应的演示here。顺便说一下,您不需要使用grid.jqGrid('navGrid', '#pager', {edit: false, add: false, del: false}, {}, {}, {}, { multipleSearch: true, multipleGroup: true, showQuery: true, recreateFilter: true, onSearch: function () { var $filter = $("#" + $.jgrid.jqID("fbox_" + this.id)), sql = $filter.jqFilter('toSQLString'); alert(sql); } }); 来使用showQuery: true方法。