1

プラグインjqgridを使用して構築しました。ページングstruts2-jquery-jqgrid除いて、すべてがうまく機能しています。

問題 :ページャーで次のボタンをクリックしたときに、ajax ベースの操作を実行したいと考えています。onPaging(jqgrid method)またはonPagingTopicsトピック(jqgrid-plugins)を使用 してページングイベントをトラップしています。このページングイベントは正常に取得されますが、ここから実際の問題が始まります。次のボタンをクリックすると、 onPagingTopics Topicsを使用してページング イベントをトラップします。このイベント内で ajax-request を呼び出しますが、この ajax-request が完了する前に、jqgrid自動的にreloadが取得されます。そのため、ajax 呼び出しに成功しました。これが発生する理由と、jqgrid のリロードを制限する方法。

注:このグリッド内で指定したURLを呼び出して、jqgrid をリロードしています。ここでグリッドを確認できますjqgridにjsonをロードする方法

これは、ページング イベントをトラップする方法です。

$.subscribe('paging',function(event,data) 
 {
   var search_string=$("#searchString").val();
   var search_field=$("#searchField").val();        
$.ajax({
         url:"adminJsontable?searchString="+search_string,
         dataType:"json",
         success: function(jsondata,stat)
          {
            var mgrid = jQuery("#gridtable")[0];
            mgrid.addJSONData(jsondata);
          }
       });
  });

更新セクション:

     $.subscribe('before',function(event,data) 
  {
    var grid = jQuery("#gridtable"); 
    grid.jqGrid('setGridParam',{url:"adminJsontable?searchString="+"neo"});
  });

これは私がURLを変更する方法ですが、機能していません。このようにして、準備完了、完了、成功などのイベントを取得できます。私が今しなければならないことを教えてください。

注: jqgridで使用されているメソッドまたはイベントを使用できますが、その作成方法がわかりません。

4

1 に答える 1

1

jqGridがどのように機能するかについては誤解があるだけだと思います。ユーザーが別のページを選択すると、jqGridはデフォルトでサーバーにajaxリクエストを送信します。使用できるサーバーへのリクエストに追加のカスタムフィルターを含める必要がある場合postData回答を参照)。たとえば、次のことができます

$("#grid").jqGrid({
    url: "adminJsontable",
    postData: {
        searchField: function () {
            return $("#searchField").val();
        },
        searchValue: function () {
            return $("#searchString").val();
        }
    },
    ... // other options which you use
});

私自身はStrutsを使用していませんが、Strutsの内部で使用するために自分で書き直すことができると確信しています。

上記のコードは、追加のパラメーターを送信searchFieldsearchValue、ページングの並べ替えなどを含むすべてのリクエストでサーバーに送信します。したがって、ユーザーがデータを入力する#searchField#searchString、そのデータはサーバーコードによって考慮されます。

更新:struts2-jquery-jqgridプラグインを使用する場合の指定方法がわからないpostData場合でも、HTMLページにJavaScriptファイルを含めることができる必要があります。含める場合

$.extend(true, $.jgrid.defaults, {
    postData: {
        searchField: function () {
            return $("#searchField").val();
        },
        searchValue: function () {
            return $("#searchString").val();
        }
    }
});

{}jqGridのpostDataパラメータのデフォルト値を上記で提案した値に再定義することができます。jaGridを作成する前に、上記のコードを実行することが重要です。グリッドの作成にのみJavaScriptコードを実行できる場合は、次のコードを実行できます。

$.extend(true, $("#gridtable").jqGrid("getGridParam", "postData"),
    {
        searchField: function () {
            return $("#searchField").val();
        },
        searchValue: function () {
            return $("#searchString").val();
        }
    }
});
于 2013-02-28T11:09:54.207 に答える