私はなんとかこれを成し遂げることができました、そして私はあなた方全員とこれを共有することをうれしく思います。参考までに、説明の下にjqgridコード全体を掲載しました。
そのため、最初に、結果にJSONを使用するため、jsonReaderを使用します。
次に、{{search:remote}、{sorting:local}、{pagination:local}}の動作を実現するための固有の設定を次に示します。
設定loadonce: false
するか、[検索]ボタンを押すと、サーバーはヒットせず、代わりに常にローカル検索が実行されます。
jqGridの複数検索機能を実装して、ページャーバーに小さな「倍率ガラス」を表示したかったのです。
jQuery("#list2").jqGrid('navGrid','#pager2',{ del:false,add:false,edit:false},{},{},{},{multipleSearch:true});
ここで、リモート検索機能を実現する方法は、onSearchおよびonCloseイベントでデータ型をローカルからjsonに切り替えることです。つまり、検索クエリを実行するとき(つまり、[検索]ボタンをクリックするとき)、loadonceをfalseに設定し、データ型をjsonに設定します。これにより、リモート検索が保証されます。グリッドにremote-searched-dataが入力されたので、datatype:localに戻す必要がありますが、明示的にonCloseを設定しても機能しないため、代わりにloadonce:trueを設定します。これにより、後でdatatype:local自体が設定されます。また、closeAfterSearch:true、closeOnEscape:trueがあることに注意してください。これにより、検索クエリを実行した後、onCloseイベントが常に閉じられるようになります。
jQuery("#list2").jqGrid('searchGrid', {multipleSearch: true, closeAfterSearch: true, closeOnEscape: true,
onSearch: function(){$("#list2").setGridParam({loadonce: false, datatype: 'json'});
$("#list2").trigger("reloadGrid");
}, onClose: function(){$("#list2").trigger("reloadGrid");
$("#list2").setGridParam({loadonce: true});
$(".ui-icon-refresh").trigger('click');
}
});
$(".ui-icon-refresh").trigger('click');
結果を読み込んだ後、強制的に更新します。これは場合によっては必要でした(理由はわかりません)。私は自分でこの修正に遭遇したばかりで、なぜそれが機能するのかわかりません。アイデアがあれば、その理由を知りたいです。
最後に、グリッドが読み込まれるたびに、デフォルトで検索ボックスが表示されます。そこで、jqueryにモーダルボックスの「x」ボタンをクリックさせるだけで、強制的に閉じました。ハッキーですが動作します!:P
$(".ui-icon-closethick").trigger('click');
<<<jqGridコード全体>>>
コード内の「xyz」について失礼します。そこにいくつかのDjangoコードがあったので、混乱を避けるためにxyzに置き換えました。
jQuery(document).ready(function(){
$("#list2").jqGrid({
url:'xyz',
datatype: 'json',
loadonce: false,
mtype: 'GET',
colNames:xyz
colModel :xyz,
jsonReader : {
repeatitems: false,
root: "rows",
page: "page",
total: "total",
records: "records"
},
height: '100%',
width: '100%',
pager: '#pager2',
rowNum:15,
rowList:[10,15,30],
viewrecords: true,
caption: ' ',
autowidth: false,
shrinkToFit: true,
ignoreCase:true,
gridview: true
});
jQuery("#list2").jqGrid('navGrid','#pager2',{ del:false,add:false,edit:false},{},{},{}, {multipleSearch:true});
jQuery("#list2").jqGrid('navButtonAdd', '#pager2',
{
caption: "", buttonicon: "ui-icon-calculator", title: "choose columns",
onClickButton: function() {
jQuery("#list2").jqGrid('columnChooser');
}
});
jQuery("#list2").jqGrid('searchGrid', {multipleSearch: true, closeAfterSearch: true, closeOnEscape: true,
onSearch: function(){$("#list2").setGridParam({loadonce: false, datatype: 'json'});
$("#list2").trigger("reloadGrid");
},
onClose: function(){$("#list2").trigger("reloadGrid");
$("#list2").setGridParam({loadonce: true});
$(".ui-icon-refresh").trigger('click');
}
});
$(window).bind('resize', function () {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(resizeGrids, 60);
divwidth = $(".content-box-header").width() - 40;
//alert(divwidth);
$("#list2").setGridWidth(divwidth,true);
});
$(window).resize();
$(".ui-icon-closethick").trigger('click');
});