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

高度な検索(に設定multipleGroupして有効にした)の場合true、jqGridはあなたが言及したパラメーターを使用していませんが、パラメーターを使用してい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 に答える