getGridParam
とdata
の使用が正しい方法です。アイテムまたは配列からいくつかのプロパティを削除する必要がある場合は、配列の詳細コピー($.extend(true, {}, data)
の使用)を行い、配列の各項目から不要なプロパティを削除する必要があります。
また、非表示列を含むすべてのプロパティを新しい配列にコピーすることもできます。コードは以下について次のようになります。
// get the reference to all parameters of the grid
var p = $("#listTableSupply").jqGrid("getGridParam");
// save the list of all non-hidden columns as properties of helper object
var colNames = {}, i, cm;
for (i = 0; i < p.colModel.length; i++) {
cm = p.colModel[i];
if (cm.hidden !== true) {
colNames[cm.name] = true;
}
}
// We have now colNames object with properties,
// which correspond to non-hidden columns of the grid
// Make copy of p.data including only non-hidden columns
var newData = new Array(p.data.length), prop, newItem, item;
for (i = 0; i < p.data.length; i++) {
item = p.data[i];
newItem = {};
for (prop in item) {
if (item.hasOwnProperty(prop) && colNames[prop]) {
// fill only properties of non-hidden columns
newItem[prop] = item[prop];
}
}
newData[i] = newItem;
}
私は上記のコードをテストしていないが、私はそれはあなたが必要とするデータとnewData
配列を埋める願っています。 UPDATED
:私はlastSelectedData
代わりのdata
の使用法を示している、あなたのためのthe demoを作成しました。結果の配列newData
に、表示されている列のみを含む、グリッドのフィルタリングされた項目が書き込まれます。データをフィルタリングしてから、[フィルタリングされソートされたデータの非表示フィールドを表示する]ボタンをクリックします。デモはnewData
配列を塗りつぶして表示します。私はclick
ハンドラの内部で次のコードを使用しました:
ありがとうOleg。 jqgridでデータをフィルタリングすると動作しますか?フィルタリングが完了したらフィルタデータのみを表示する必要があります。 – user1268130
@ user1268130:ようこそ!フルデータの代わりにフィルタリングされたデータを使用する必要がある場合、 'data'の代わりに' lastSelectedData'からデータを取得する必要があります([古いデモ](http://www.ok-soft-gmbh.com/jqGrid/ OK/GetFilteredData.htm)と[回答](http://stackoverflow.com/a/31568275/315935)と[この古いもの](http://stackoverflow.com/a/9831125/315935)) – Oleg
ありがとうオレグ。今それをチェックします。 :) – user1268130