1

私の問題は次のとおりです:
-ローカルデータを表示するためにjqgridを使用しています
-このデータはいくつかの部分でWebサービスから解析されます-
データとしてオブジェクトの配列を取得します(変更可能)
-新しいデータ部分を追加しようとしますaddJSONDataを使用したパーツでは、運がありません
-jqGridパラメーター "data"をデータパーツのマージされた配列に設定してみましたが、運がありません

いくつかの試行で、私は空の行を取得します。
フォーマッターを使用すると、rowObjectは問題ありませんが、cellValueは空です(未定義)。
colModelとデータ構造は「互換性がない」ようです。

いくつかの部分でグリッドにデータを追加できるようにしたいと思います。
行はソートされて表示されます。

パラメータは次のとおりです。

{  
caption: 'Villes',  
data: [],  
datatype: 'local',  
colNames: ['Actions', 'Distance', 'Coordonnées', 'Nom', 'Joueur', 'Puissance', 'Alliance', 'Diplomatie', 'Brumes', 'Status'],  
colModel: [  
    {name: 'actions', sortable: false, search: false, formatter: Shared.gridRowActions, width: 50},  
    {name: 'range', index: 'range', width: 60},  
    {name: 'coords', index: 'gps', sortable: false, search: false, formatter: function( cellValue, options, rowObject ){ return Shared.mapLink(cellValue); }, width: 90},  
    {name: 'city', index: 'city'},  
    {name: 'player', index: 'player'},  
    {name: 'might', index: 'might', align: 'right', defval: 0, formatter: function( cellValue, options, rowObject ){ return Shared.format(cellValue); }, width: 70},  
    {name: 'guild', index: 'guild'},  
    {name: 'diplomacy', index: 'diplomacy', formatter: function( cellValue, options, rowObject ){ return Shared.getDiplomacy(cellValue); }, width: 70},  
    {name: 'mist', index: 'mist', align: 'center', formatter: function( cellValue, options, rowObject ){ return cellValue === 1 ? 'Oui' : ''; }, width: 55},  
    {name: 'user', index: 'user', formatter: function( cellValue, options, rowObject ){ return Shared.userStatusLink(cellValue); }}  
],  
pager: '#pager-cities',  
loadui: 'disable',  
rowNum: 20,  
rowList: [20, 50, 100],  
sortname: 'range',  
sortorder: 'asc',  
altRows: true,  
autowidth: true,  
viewrecords: true,  
gridview: true,  
multiselect: true,  
multiboxonly: true,  
multikey: 'shiftKey'  
}

次に、グリッドにデータを追加するためのコード。

var merged = [];
var $grid = $('#grid);
...
merged = merged.concat(cities);
$grid.jqGrid('setGridParam', {data: merged}).trigger('reloadGrid');

また試した:

$grid[0].addJSONData( {page: 0, total: 0, records: cities.length, rows: cities} );

データ配列は次の例です。

[
    {"id":338591,"cell":[2,"338,591","140","15545536","Lord Patrice02200","","0","Patrice02200",0]},
    {"id":339591,"cell":[2.24,"339,591","50","16300072","Lord mercedes9pd7e","","0","mercedes9pd7e",0]},
    {"id":341591,"cell":[3.61,"341,591","727714","16330552","Lord Torkan","","0","Rizane",0]},
    {"id":341592,"cell":[4.24,"341,592","490","10929616","Lord pulpfiction","","0","pietra",0]}
]

私が本当に必要としているのは、パーツごとにデータをロードする機能と、データが追加されるたびにグリッドデータが並べ替えられて表示されることだけです。動作中のポケットベルはボーナスになります。

4

1 に答える 1

2

問題は、非常にエキゾチックな形式のデータを選択したことです。ローカルデータのデフォルトの形式表現は、名前付きプロパティを持つオブジェクトの配列です。配列項目に追加のプロパティが必要ですid。別の形式を使用しているため、データの形式を説明するlocalReaderパラメーターを追加する必要があります

デモ

ここに画像の説明を入力してください

投稿したものと同じグリッドを使用します。追加しました

localReader: {repeatitems: true}

投稿していないコードを含むすべてのフォーマッターを削除しました。グリッドを埋める最良の方法はdata、入力データでオプションを使用することです。height: "auto"グリッドの見栄えを良くするためだけに追加しました。だからあなたは見るでしょう

于 2012-04-18T20:12:19.447 に答える