我有一个带有以下寻呼机的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()
我搜索时没有触发。如何将此自定义字符串发送到我的服务器?
答案 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
方法。