0

我正在使用我的项目中的struts2hibernate,并且我正在使用jqgrid进行数据显示。现在我想将jqgrid 搜索窗口重定向到一个链接。我已经通过以下代码做到了

     $(document).ready(function() 
     {
        $("#link1").click(function()
        {
            $("#gridtable").jqGrid ('searchGrid',{multipleSearch:false, 
                multipleGroup: true,
                recreateFilter: true,
                onSearch: function(event,data)
                {
                    document.location.href="jasperPdf";                      
                }
            });
            return false;
        });
    });

我的链接代码是

<s:a id="link1">PDF Report</s:a>

它正确显示搜索窗口。但是当我单击搜索网格窗口上的查找按钮时,它返回的searchString, searchOper and searchField值为null。所以我无法进行任何进一步的操作。请指导我...

谢谢你。

4

2 回答 2

2

高级搜索的情况下(您已通过设置激活multipleGrouptruejqGrid 不使用您提到的参数,但它正在使用filters参数。此参数将包含一个描述所选搜索选项的对象,类似于:

{
    "groupOp":"OR",
    "rules":[{"field":"a.id","op":"eq","data":"1"}],
    "groups":[
         {
             "groupOp":"AND",
             "rules":[{"field":"a.id","op":"eq","data":"2"}],
             "groups":[...]
         }
     ]
}

当然,对象将被序列化为 JSON,因此您需要在服务器端对其进行反序列化。这些字段具有以下含义:

  • groupOp确定应在范围内的规则和组之间使用哪个运算符
  • rules包含一组过滤规则
  • field这相当于searchField规则
  • op这相当于searchOper规则
  • data this is the equivalent of规则的 searchString`
  • groups包含一组子组

你可以在这里阅读更多。

更新

您需要将参数添加到要重定向的 URL,例如,在单次搜索的情况下,它可能如下所示:

onSearch: function(event,data)
{
    var gridPostData = $("#gridtable").getGridParam("postData");
    document.location.href = "jasperPdf?searchField=" + encodeURIComponent(gridPostData.searchField) + "&searchOper=" + encodeURIComponent(gridPostData.searchOper) + "&searchString=" + encodeURIComponent(gridPostData.searchString);                      
}
于 2013-03-20T08:39:01.860 回答
0

当我遇到这篇帮助我找到解决方案的相关文章时,我正在寻找填充隐藏字段:

\$.extend(\$.jgrid.search,{Find:"Filter Results", caption:"RHZ Results Filter",
    onSearch: function() {
        var gridPostData = jQuery("#tablegrid").jqGrid('getGridParam','postData');
            \$.each(gridPostData, function(index, value){
                if (index == 'searchField')
                    {\$('#searchField').val(value);}
                else if (index == 'searchString')
                    {\$('#searchString').val(value);}
                else if (index == 'searchOper')
                    {\$('#searchOper').val(value);}
                else {}
             })},
        closeAfterSearch:true,
        odata: [{ oper:'eq', text:'equal'},
            { oper:'cn', text:'contains'},
            {oper:'bw', text:'begins with'},{oper:'ew', text:'ends with'}
            ]

});

于 2013-11-26T22:22:34.673 回答