如何从查询字符串向jqgrid传递复杂的搜索条件

如何从查询字符串向jqgrid传递复杂的搜索条件,jqgrid,Jqgrid,我尝试了下面的代码将过滤器传递给调用jqgrid的url。jqGrid仍然显示所有行,传递的筛选器不会传递到url以从服务器检索数据。 如何强制jqGrid按查询字符串中传递的筛选器进行筛选 window.open( '/Grid?filters=' + encodeURIComponent( '{"groupOp":"AND","rules":[{"field":"Name","op":"cn","data":"John"}' )); 您可以解析window.location.href

我尝试了下面的代码将过滤器传递给调用jqgrid的url。jqGrid仍然显示所有行,传递的筛选器不会传递到url以从服务器检索数据。 如何强制jqGrid按查询字符串中传递的筛选器进行筛选

window.open( '/Grid?filters=' + encodeURIComponent(
  '{"groupOp":"AND","rules":[{"field":"Name","op":"cn","data":"John"}' )); 

您可以解析
window.location.href
并获取所需的所有参数。如果URL包含您需要的参数,您可以根据需要对其进行解码并使用

以下代码可用于测试。它演示了如何解码
过滤器
参数

if(window.location.href.indexOf('?')<0){
//该代码将打开当前HTML页面,并添加其他内容
//参数“filters”并使用参数重新打开同一页面
window.location=window.location.href+'?'+
$.param({
过滤器:JSON.stringify({
groupOp:“和”,
规则:[
{字段:“名称”,作品:“cn”,数据:“约翰·史密斯”}
]
})
});
}否则{
//解码URL参数并将其放置在
//对象“参数”:
var namedParameters=window.location.href.slice(window.location.href.indexOf('?'))+1.split('&'),
参数={},
名字和价值,
我
对于(i=0;i
是URL
/Grid
是具有
的页面,还是返回网格中填充的JSON数据的服务器URL?@Oleg:Grid是ASP.NET MVC2控制器,返回包含id为“Grid”的网格的页面,非常感谢。我尝试了代码,但得到了一个异常,哈希值未定义。我把它换成了namedParameters@Andrus:在答案中包含代码片段的过程中,我对名称进行了一些修改。
hashes.length
应重命名为
namedParameters.length
。谢谢。如果数据值是空格,例如
数据:“
,加上字符将传递给控制器,控制器将获取json数据而不是空格。搜索条件通常包含列名和值,这些列名和值与
{“groupOp”:“and”,“rules”:[{“field”:“Name”,“op”:“eq”,“data”:“John”},{“field”:“Company”,“op”:“eq”,“data”:“Soft”}}
。如何从该数据中预填充搜索工具栏?@Andrus:必须对具有任何特殊字符的编码URL数据进行解码(例如,请参见我的代码中的
decodeURIComponent
)。根据您将信息转发给服务器的方式,服务器会自动解码,或者您应该解码数据手册。例如,您可以在ASP.NET中使用。关于你的另一个问题,我已经回答了。描述如何使用
postData.filters
中的数据填充搜索工具栏。