Web サイトを作成していて、自分のページに jqGrid があります。jqGrid の「searchGrid」関数を呼び出すカスタム ボタンを navgrid (ページャー) に追加して、高度な検索機能を使用しています。
$('#My_Grid_Id').jqGrid(settingsObject)
.navGrid('My_Grid_Id_toolbar1',{del:false,add:false,edit:false,refresh:false,search:false})
.navButtonAdd('My_Grid_Id_toolbar1',
{
caption: 'Search',
buttonicon: 'ui-icon-search',
title: 'Search',
onClickButton: function() {
$(gridSelector).jqGrid ('searchGrid', {
caption: 'Search',
multipleSearch:true,
overlay: false,
multipleGroup:true,
recreateFilter: true
});
}
});
ユーザーがページを離れたときに検索設定を保存して、ユーザーが戻ったときに再読み込みできるようにしたいと考えています。解決策はほとんどありますが、検索設定を保存して再読み込みした後、検索ダイアログ ウィンドウの [リセット] ボタンが期待どおりに機能しません。バックグラウンドで検索設定がリセットされたように見えますが、ウィンドウは更新されず、グリッドには古い結果が表示されたままです。
もう少し説明します。ウィンドウのアンロード イベントをキャッチし、ajax 呼び出しで potdata.filters パラメーターをサーバーに送信して検索設定を保存します。次に、後で読み込むことができる Cookie にデータを保存します。
$(window).unload( function () {
$.ajax({
type: "POST",
url: saveUrl,
dataType: 'json',
traditional: true,
async: false,
data: {
searchSettings: $('#My_Grid_Id').getGridParam('postData').filters
}
});
});
グリッドをリロードすると、Cookie に値があるかどうかを確認し、保存したフィルターをコンストラクターのグリッドに挿入します。
postData: {
filters: mySavedSearchSettings
},
この時点で、グリッドは正常に機能し、検索が保存され、結果が期待どおりに表示されます。検索ウィンドウ ダイアログを開くと、検索オプションが期待どおりに表示されます。しかし、[リセット] ボタンをクリックすると、ウィンドウが正しく更新されず、グリッドの結果も更新されません。onclick イベントをリセット ボタンに追加して検索を手動でリセットしようとしましたが、何も起こらないようです。
afterShowSearch: function() {
$('.fm-button-icon-left').click(function(){
$('#My_Grid_Id').jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid");
});
}
誰でも助けを提供できますか?私は近いと思います。何らかの方法で検索ウィンドウをリセットしてから、グリッドをリロードする必要があります。