2011-12-30 17 views
2

jQueryプラグインjqGridを読み込もうとしていますが、ドキュメントとデモを読み飛ばすときには短期間です。jqGridを使用してテーブル行にデータ属性を作成する

私が達成したいのは、JSONデータの一部を列に表示し、他の部分を使用して各テーブル行にHTML5データ属性を作成することです。しかし、私はjqGridがこれを処理できるかどうかを判断することはできません。

私が何をしたいの例:

次のデータから、(空白読みやすくするために追加された)

[ 
{ 
    'id': 1, 
    'type': 0, 
    'name': 'first', 
    'address': '1524, 3rd street', 
    'X': 18.0068922, 
    'Y': 59.31076795 
}, 
{ 
    'id': 7819, 
    'type': 0, 
    'name': 'not first', 
    'address': 'South Corner', 
    'X': 144.18457031, 
    'Y': -22.20774917 
} 
] 

私は、次の表を作成したい:

<table> 
    <thead> 
     <th>Name</th> 
     <th>Address</th> 
    </thead> 
    <tbody> 
     <tr data-id="1" data-type="0" 
      data-x-coord="18.0068922" data-y-coord="59.3107695"> 
      <td>first</td> 
      <td>1524, 3rd street</td> 
     </tr> 
     <tr data-id="7819" data-type="0" 
      data-x-coord="144.18457031" data-y-coord="-22.20774917"> 
      <td>not first</td> 
      <td>South Corner</td> 
     </tr> 
    </tbody> 
</table> 

ご覧のとおり、データ属性の名前は、行のプロパティと同じである場合と同じでない場合があります。また、この例では示されていないが、いくつかのプロパティは、表に表示するためとデータ属性の両方に使用されます。

JSONデータを提供するAPIは他の場所で使用されているため、変更することはできません。データ属性の要件は、別の(自作の)jQueryプラグインによっても定義されているため、変更することもできません。

jqGridでこれを行う方法はありますか?もしそうなら、どうですか?そうでない場合は、どのようなオプションがありますか?

答えて

1

afterInsertRowイベントを使用して、グリッドに挿入された各行を保持し、希望通りに変更できます(jQuery.attr()を使用してカスタム属性を追加します)。

+0

ニースとシンプル。ありがとう! –

+1

@TomasLycken: 'afterInsertRow'を使用すると、' gridview:true'パラメータを使用できないため、データ応答の処理が遅くなります。オリジナルのJSONデータをパラメータとして持つ 'loadComplete'を使う方が良いでしょう。 'jQuerx.data'を使って'​​'要素にデータを置くことができます。ところで、 'data-id'を設定する必要はありません。代わりに 'id'属性'​​'を使うことができます。この問題は、サーバーからデータを返す形式と、使用する[jsonReader](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data)という形式の問題です。 – Oleg

+0

@Oleg: 'afterInsertRow'と' addRowData'はうまく動作します - 私はサーバからの実際のデータで試してみました。また、これは非常に複雑なマッピングのために新しい 'jsonReader'を書くことを避けることができます。これはjqGridを初めて使用して以来初めてです:Pこのすべての解決策では、しかしすべてが十分に劣っています。 –

関連する問題