2

Dojo 1.5 (dojox を含む) を使用しています。各行がユーザーを表す dojox.grid.DataGrid があります。行をクリックすると、/users/USER_ID のような URL にリダイレクトしたいと考えています。ユーザー ID はグリッド内のフィールドの 1 つなので、onRowClick コールバックで行う必要があるのは、クリックされた行のユーザー ID を取得することだけです。

クリック イベントには rowIndex プロパティが含まれています。実際、別の場所で (かなり古い) 投稿を見つけました。

var row = dijit.byId('grid').model.getRow(e.rowIndex);
/* (Then grab the 0th field of the row, which is the user ID.) */

(申し訳ありませんが、その後、URLを紛失しました。)

しかし、私のグリッド オブジェクトにはモデル属性がありません。どうしたの?API は変更されましたか? (私のグリッドには確かにデータが入力されており、表示、クリック、列による並べ替えなどを行うことができます)。

だから私は今のところ立ち往生しています。ところで、rowIndex を使用してグリッドの基礎となる dojo.data.ItemFileReadStore に直接アクセスしても機能しないことに注意してください。これは、グリッドが並べ替え可能なため、グリッドの行がストアの行と同じ順序になるという保証がないためです。

ヒントをいただければ幸いです。質問が明確であり、回答が私の苦境にある他の人を助けることができるほど十分に一般的であることを願っています. どうもありがとう。

4

1 に答える 1

2

同様のシナリオがあり、次のように値を取得します。

onRowClick: function(e) {
   open_link(my_grid._getItemAttr(e.rowIndex, 'object_path'));
}

この場合、my_grid はデータグリッドへの参照であり、object_path はオブジェクトへのパスを格納する列です。もちろん、open_link は私のカスタム関数であり、サーバー パスを要求します。

したがって、ケースに合わせて詳細を変更するだけで問題ありません。

于 2010-12-09T08:46:04.243 に答える