3

グリッドがあり、クリック可能な行が必要です。行がクリックされると、新しいウィンドウが開くはずです。ただし、クリックすると行が削除される削除アイコン付きのアクション列を追加したいと思います。問題は、アクション列のアイコンをクリックすると、その行に関連するアクションもトリガーされ、新しいウィンドウが開くことです。アクション列がクリックされたときに1つのアクションをトリガーし、行の残りの部分がクリックされたときに別のアクションをトリガーする方法を見つける必要があります。何かアイデアはありますか?

たぶん、次の擬似コードのようなものです:

grid.on('itemclick', function(grid, rowIndex, columnIndex, e) {
    if (action column clicked) { // do something }
    else { // do something else }
}, this);

...しかし、アクション列がクリックされたことを検出するにはどうすればよいですか?ありがとうございました。

4

3 に答える 3

7

これの代わりに:

grid.on('itemclick', function(grid, rowIndex, columnIndex, e) {
    if (action column clicked) { // do something }
    else { // do something else }
}, this);

これを使って:

grid.getView().on('cellmousedown',function(view, cell, cellIdx, record, row, rowIdx, eOpts){
    //itemclick logic
});

actioncolumnの場合、このイベントは発生しません。だからあなたは必要ありませんif - else

このイベントは文書化されていないようですが、ここのドキュメントにはプライベートメソッドがあります

参照:ExtJS4-グリッド-特定の列の行選択を無効にする

于 2012-09-03T10:42:36.347 に答える
0

試したことはありますExt.EventObject#stopPropagation()Ext.EventObject#stopEvent()

アクション列ハンドラー内に追加できます:

e.stopPropagation();

このように、グリッドのitemclickイベントはトリガーされません。

于 2012-09-03T05:37:40.180 に答える
0

イベントタイプを変更せずに、質問に対するより直接的な答えは次のようになります。

grid.on('itemclick', function(grid, rowIndex, columnIndex, e) {
  var columnType = grid.panel.columns[columnIndex].xtype;
  if (columnType === 'actioncolumn') {
    // it's action column!
  } else {
    // it's NOT action column!
  }
}, this);
于 2014-09-01T12:11:32.503 に答える