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

时间:2011-11-26 14:54:57

标签: jqgrid

我尝试使用下面的代码将过滤器传递给调用jqgrid的url。 jqGrid仍显示所有行,传递过滤器未传递给url以检索数据表单服务器。 如何强制jqGrid按查询字符串中传递的过滤器进行过滤?

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

1 个答案:

答案 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);
        }
    }
}