View Full Version : 連結グリッドの選択について
ak_ext
21 May 2009, 6:57 PM
サンプルを添付したのですが、
2つのグリッドが横に並んでいて、
どちらかを選択すると、
もう一つのグリッドも同じ行が選択されます。
ただ↑↓キーを押した時に連動しません。
これを連動させるには、
キーアップイベントを拾うのでしょうか。
http://extjssamples-jp.googlecode.com/svn/trunk/grid/multigridsort2.html
のサンプルを見ると、
キーの上下に対応してますが、キーアップイベントは見当たりません。
自分のサンプルはいろいろなイベントを拾って処理してますが、
どのように書くのが、一番シンプルになるのでしょうか。
何卒宜しくお願いします。
Tommy1969
21 May 2009, 10:38 PM
クリックするにしても、方向キーを押すにしても、その行為は "行を選ぶ" ことですから、どちらの操作を行っても、SelectionModel のイベントが発火されます。ですので、SelectionModel の rowselect で拾って、相手方の grid の方についても SelectionModel の selectRow で操作してやればいいでしょう。
サンプル:
function syncSelect(src_grid, dst_grid) {
var src_sm = src_grid.getSelectionModel();
var dst_sm = dst_grid.getSelectionModel();
src_sm.on('rowselect', function(sm, index, rec) {dst_sm.selectRow(index);});
}
グリッドを作った後に、この関数を呼んでやれば、マウスクリックでも、キー操作でも、行選択が同期します。;)
syncSelect(src_grid, dst_grid);
ってな感じで。ただし、選択行は同期しても、スクロールの同期となると、別問題。そこは、私はノーアイデアです。:-?
ak_ext
22 May 2009, 12:12 AM
早速サンプルに組み込んでみました。。
でも変わらない・・
グリッドでキーを上下しても、rowselectのイベントに
入らないみたいです。
書き方が悪いのでしょうか。
でも他にイベントなさそうですよね。
Tommy1969
22 May 2009, 3:02 AM
テストしたソースだったんですが、動きませんでしたか?:-/
他のイベントが、イベントチェーンを切っっちゃってるのかなぁ…?:-?
参考までに、私のテストソースを添付しておきます。
Tommy1969
22 May 2009, 3:36 AM
ソースを拝見しました。syncSelect の使い方が違います…。(^^;
syncSelect は、グリッドを作る時に listener に埋め込む方式ではなく、できあがった grid に後からイベントを貼付けるように使います。
ak_ext さんの添付ソースに入れるサンプルを添付しておきます。(動作確認済み)
# 動作確認しやすいように、グリッドの Listener など、一度全部消してシンプルにしました。勝手に触って、すみません…。m(__)m
ak_ext
22 May 2009, 3:40 AM
testサンプルを踏襲したらできました。
本当に助かります!
Powered by vBulletin® Version 4.1.5 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.