2011-12-19 24 views
0

jqgridローカルキャッシュを無効にする方法はありますか? 私はいくつかのフィルタを構築し、このパラメータに基づいてjqgridを作成するページを持っています。jqgridローカルキャッシュを無効にするにはどうすればよいですか?

問題は、jqgridがpostdataパラメータを変更しないことです。私は、第2、第3、第4などの検索では、結果は常に最初のものと等しいことを意味します。 マイjqgridデフォルトは以下のとおりです。

jQuery.extend(jQuery.jgrid.defaults, { 
     ajaxGridOptions: { 
      contentType: 'application/json;', 
      type: "POST", 
      cache: false, 
      beforeSend: function() { 
       $(".loading").show(); 
      } 
     }, 
     serializeGridData: function (postData) { 
      return JSON.stringify(postData); 
     }, 
     datatype: 'json', 
     autowidth: true, 
     height: '100%', 
     rowNum: 10, 
     rowList: [10, 20, 30], 
     hidegrid: false, 
     prmNames: { 
      search: "isSearch", 
      nd: null, 
      rows: "numRows", 
      page: "numPage", 
      sort: "orderBy", 
      order: "orderType" 
     }, 
     viewrecords: true, 
     gridComplete: function() { 
      $(".loading").hide(); 
     }, 
     jsonReader: { 
      root: function (obj) { return obj.d.rows; }, 
      page: function (obj) { return obj.d.page; }, 
      total: function (obj) { return obj.d.total; }, 
      records: function (obj) { return obj.d.rows.length; }, 
      repeatitems: false 
     } 
    }); 

jqGridの作成:私が正しくあなたを理解していれば

$myGrid.jqGrid({ 
     postData: { from: jQuery.parseDate(fromQueryString), to: jQuery.parseDate(toQueryString) }, 
     url: "/Search.aspx/Find", 
     colNames: ['Test'], 
     colModel: [ 
     { name: 'Test', index: 'Test', sortable: false, width: 40 } 
     ], 
     sortname: "Date", 
     sortorder: "desc", 
     jsonReader: { id: "ID" }, 
     pager: "pagerControl", 
     caption: "Results" 
}); 

答えて

1

、ページは "から" のコントロールは、IDSとinput#frominput#to<input>フィールドのようないくつかのコントロールを構築してきましたと "to")は、他のパラメータと一緒にサーバーに送信する間隔を定義します。

私はあなたのコードが

var $myGrid = $("#list"), 
    fromQueryString = "", 
    toQueryString = "", 
    createGrid = function() { 
     $myGrid.jqGrid({ 
      postData: { 
       from: jQuery.parseDate(fromQueryString), 
       to: jQuery.parseDate(toQueryString) 
      }, 
      url: "/Search.aspx/Find", 
      colNames: ['Test'], 
      colModel: [ 
       { name: 'Test', index: 'Test', sortable: false, width: 40 } 
      ], 
      sortname: "Date", 
      sortorder: "desc", 
      jsonReader: { id: "ID" }, 
      pager: "pagerControl", 
      caption: "Results" 
     }); 
    }, 
    myRefresh = function() { 
     var fromQueryString = $("#from").val(), 
      toQueryString = $("#to").val(); 

     createGrid(); 
    }; 

$("#from").change(myRefresh); 
$("#from").change(myRefresh); 
createGrid(); 

のように見える問題が上記のコードは間違っていることであると仮定します。 createGrid初めてグリッドを作成し、次に$myGridというグリッドが作成されたことをテスト後には何も処理しません(myRefreshの内部)。グリッドの多くの部分:タイトル、列ヘッダー、ページャーなどは、を一度だけ作成する必要があると想像してください。。次回はグリッド本体のの内容をリロードするだけでが必要になります。

jqGridをリフレッシュする正しい方法は、グリッド乗算時間を作成するのではなく、.trigger("reloadGrid")です。一つは、メソッドfrompostDatatoは、すべてのグリッドのリロードで呼び出される場合は、以下の

var $myGrid = $("#list"), 
    fromQueryString = "", 
    toQueryString = "", 
    createGrid = function() { 
     $myGrid.jqGrid({ 
      postData: { 
       from: function() { 
        return jQuery.parseDate($("#from").val()); 
       }, 
       to: function() { 
        jQuery.parseDate($("#to").val()); 
       } 
      }, 
      url: "/Search.aspx/Find", 
      colNames: ['Test'], 
      colModel: [ 
       { name: 'Test', index: 'Test', sortable: false, width: 40 } 
      ], 
      sortname: "Date", 
      sortorder: "desc", 
      jsonReader: { id: "ID" }, 
      pager: "pagerControl", 
      caption: "Results" 
     }); 
    }, 
    myRefresh = function() { 
     $myGrid.trigger("reloadGrid", [{page: 1}]); 
    }; 

$("#from").change(myRefresh); 
$("#from").change(myRefresh); 
createGrid(); 

にコードを修正することができます。たとえば、グリッドソートを変更するためにユーザーが列ヘッダーをクリックした場合、またはユーザーがグリッドの別のページを表示することを選択した場合などです。このアプローチについて詳しくはhereをご覧ください。

さらに変更できるのはserializeGridDataのコードで、postDataのプロパティをテストし、必要に応じて関数を呼び出す必要があります。詳細は、hereを参照してください。

+0

私のアプローチは、.jqGrid( 'GridUnload')を呼び出すことでした。 – Alexandre

+0

@Alexandre。 'GridUnload'の使用は可能ですが、投稿していないコードの部分には問題はあります。 'fromQueryString'と' toQueryString'と 'GridUnload'を使う場所のどこにコードがありますか?さらに、あなたは 'url:" /Search.aspx/Find " - ASPXでURLでASMX拡張子やASHXではないURLを使用するのは不思議です。使用したコードを拡張できますか? – Oleg

+0

これはwebmethodsです。見てくださいhttp://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/ – Alexandre

関連する問題