私はこの答えを知っています:jqgridにキャンセルボタンを追加するにはどうすればよいですか?、キャンセルをトリガーするボタンはありませんが、同様の実装を試みています。ページの読み込み時に読み込まれるグリッド(デフォルトでは条件なしで読み込まれる検索)があり、ユーザーが実際に条件付きの検索を実行したときに、デフォルトの空の条件検索をキャンセルできるようにしたいと思います。ボタンは必要ないので、loadBeforeSendメソッドでxhrリクエストを追跡するだけでソリューションを簡素化しようとしています。グリッドをロードするときに、xhrがnullでない場合は中止します。コード:
var gridXhr;
function getGridData() {
var searchParms = ...;
var colHeaders = [...];
var colDefinitions = [...];
if (gridXhr != null) {
alert(gridXhr.readyState);
gridXhr.abort();
gridXhr = null;
}
$('#grid').jqGrid('GridUnload');
$('#grid').jqGrid({
defaults: {...},
autowidth:true,
url: "<%= Page.Request.Path %>/ExecuteSearch",
mtype: 'POST',
ajaxGridOptions: { contentType: "application/json" },
postData: searchParms,
datatype: "json",
prmNames: {
nd: null,
rows: null,
page: null,
sort: null,
order: null
},
jsonReader: {
root: function (obj) { return obj.d; },
page: function (obj) { return 1; },
total: function (obj) { return (obj.d.length / 20); },
records: function (obj) { return obj.d.length; },
id: 'CatalogID',
cell: '',
repeatitems: false
},
loadonce: true,
colNames: colHeaders,
colModel: colDefinitions,
caption: "Search Results",
pager: 'searchPaging',
viewrecords: true,
loadBeforeSend: function (xhr) {
gridXhr = xhr;
},
loadError: function (xhr, status, error) {
gridXhr = null;
if (error != 'abort') {
alert("Load Error:" + status + "\n" + error);
}
},
loadComplete: function() {
gridXhr = null;
},
multiselect: <%= this.MultiSelect.ToString().ToLower() %>,
multiboxonly: true
}).setGridWidth(popWidth);
}
私が抱えている問題は、jqGridの後続の実行が機能しないことです。loadError関数がトリガーされ、エラー(3番目のパラメーター)が「abort」になります。他の回答で行ったように、loadBeforeSendでもっと/違うことをする必要がありますか?
また、Olegは彼のサンプルコードmyGrid[0].endReq();
で言及しましたが、ドキュメントにはその言及がありません-その関数は存在しますか?