0

昨日この質問をしましたが、別の言葉で再度投稿しても応答がありません-

集計行を含む2つの列があります-

var cols = [
      { id: 'myCol1', header: 'Price1', dataIndex: 'PRICE1', type: 'float', width: 50, summaryType: 'sum' },
      { id: 'myCol2', header: 'Price2', dataIndex: 'PRICE2', type: 'float', width: 50, summaryType: 'sum' },
];

クリックすると新しいウィンドウを開くことができるように、これらの集計行に cellclick イベントを追加したい グリッドの cellclick イベントを使用すると、この集計行を除くすべてのセルで機能します。

クリックできるようにするために使用できる他のイベントはありますか。

アップデート:

サマリー行で機能しない次のリスナーを使用しました

listeners: {
  cellclick: function(grid, rowIndex, cellIndex) {
    // do whatever
  },
  scope: this
}
4

2 に答える 2

2

私の知る限り、集計行クリックの組み込みイベントはありません。できることは、セル要素自体にリスナーを追加することです。

delegateリスナーのオプションを使用すると、簡単に行うことができます。ただし、このオプションは DOM 要素イベントでのみ使用できるため、elementイベントをグリッドの body 要素にフックするオプションも使用する必要があります (代わりに、 のようなものを使用できますmyGrid.getEl().on({ ... }))。

グリッドの構成に直接追加するリスナーの例を次に示します。

listeners: {
    scope: this
    ,click: {
        element: 'body'
        // Would have been great to use '.x-grid-row-summary .x-grid-cell',
        // but delegate only accept a *simple selector* which, seemingly,
        // means just one class...
        ,delegate: '.x-grid-cell'
        ,fn: function(e, target) {
            // Remove the condition if you want to catch all cells. You won't
            // have all the arguments that are available in the cellclick
            // event, though.
            if (Ext.fly(target).up('tr').is('.x-grid-row-summary')) {
                // The cellIndex is assigned by the table view when it render the
                // cell element.
                alert('Click on summary cell at index ' + target.cellIndex);
            }
        }
    }
}

残念ながら、この種のコードは、Ext によって設定されたクラス名とプロパティに依存しておりcellIndex、将来変更される可能性があります... lib をアップグレードするときは、そのことを覚えておいてください!

于 2013-11-29T11:11:33.890 に答える
0

行クリックのイベントを追加するために使用したコードについてはわかりませんが、このコードをグリッド パネルに追加しています。

   listeners: {
      cellclick: function(iView, iCellEl, iColIdx, iRecord, iRowEl, iRowIdx, iEvent) {

            var fieldName = iView.getGridColumns()[iColIdx].dataIndex;
console.log(fieldName );
}
    }
于 2013-11-29T10:17:41.530 に答える