我尝试使用下面的代码将过滤器传递给调用jqgrid的url。 jqGrid仍显示所有行,传递过滤器未传递给url以检索数据表单服务器。 如何强制jqGrid按查询字符串中传递的过滤器进行过滤?
window.open( '/Grid?filters=' + encodeURIComponent(
'{"groupOp":"AND","rules":[{"field":"Name","op":"cn","data":"John"}' ));
答案 0 :(得分:2)
您可以解析window.location.href
并获取所需的所有参数。如果网址包含您需要的参数,您可以根据decodeURIComponent对其进行解码,并根据需要使用。
以下代码可用于测试。它演示了如何解码filters
参数。
if (window.location.href.indexOf('?') < 0) {
// the code will open the current HTML page with additional
// parameter "filters" and reopen the same page with the parameters
window.location = window.location.href + '?' +
$.param({
filters: JSON.stringify({
groupOp: "AND",
rules: [
{field: "Name", op: "cn", data: "John Smith"}
]
})
});
} else {
// decode URL parameters and place in the as properties in the
// object "parameters":
var namedParameters = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'),
parameters = {},
nameAndValue,
i;
for (i = 0; i < namedParameters.length; i += 1) {
nameAndValue = namedParameters[i].split('=');
parameters[nameAndValue[0]] = decodeURIComponent(nameAndValue[1]);
if (nameAndValue[0] === "filters") {
// display the data from the "filters" parameter
var myFilters = $.parseJSON(decodeURIComponent(nameAndValue[1]));
alert(myFilters.rules[0].data);
}
}
}