2013-11-29 4 views
0

задал этот вопрос вчера, но не получаю никакого ответа на размещение его снова в diffrent слова-Добавить нажмите событие в итоговой строке сетки в ExtJS

У меня есть две колонки с резюме row-

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 в эту итоговую строку, чтобы при щелчке я мог открыть новое окно. Если я использую событие gridclick для сетки, он работает для всех ячеек, кроме этой итоговой строки.

Есть ли какие-либо другие события, которые я могу использовать, чтобы я мог щелкнуть по нему.

UPDATE:

Я использовал следующий слушатель, который не работает в итоговой строке

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

Ват у вас попробовал и поделился некоторым кодом относительно этого, чтобы помочь u .. – codebreaker

+0

@codebreaker: см. Мои правки –

ответ

2

Насколько я знаю, нет встроенного события для сводной строки. Что вы можете сделать, так это добавить слушателя к самому элементу ячейки.

Вы можете сделать это легко, используя опцию delegate слушателя. Но этот параметр доступен только для событий элементов DOM, поэтому мы также должны использовать опцию element для привязки нашего события к элементу тела сетки (в качестве альтернативы вы можете использовать что-то вроде 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); 
      } 
     } 
    } 
} 

К сожалению, этот вид кода зависит от имен классов и cellIndex собственности, которые устанавливаются Ext, и что может измениться в будущем ... Имейте это в виду, когда вы обновляете lib!

+0

Как в Ext 2.3.0 ?? Очень вероятно, что этот код не будет работать с этой версией ... Я протестировал его против 4.2.0. Вы должны указать версию в вопросе или теге. Вы можете попробовать с 'Ext.get' вместо' fly', но я боюсь, что этого будет недостаточно; параметры разметки и/или прослушивателя также могут быть изменены. – rixo

+0

Я придумал это: 'if (Ext.fly (e.target) .up ('tr'). Is ('. X-grid-row-summary'))' Но это всегда неверно, даже если я нажимаю сверху сводная информация. –

+0

Я не могу найти документы для резюме в 2.3, но я думаю, что классы CSS скорее будут «x-grid3-summary-row» и «x-grid3-cell». – rixo

0

Я не уверен, что код у использовало добавление события для ряда клика, но все-таки я Я добавлю этот код в панель решетки, надеюсь, что это поможет, если бы вы уже пробовали уже .. Я отредактировал это ниже, я думаю.

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

      var fieldName = iView.getGridColumns()[iColIdx].dataIndex; 
console.log(fieldName); 
} 
    } 
+0

Я хочу использовать щелчок мышью. Пожалуйста, см. Мои правки –

+0

sry не видел, что k hv u пошел в документы. Просто проверьте это с помощью wil ... http: //docs.sencha.com/extjs/4.0.7/#!/Api/Ext .selection.CellModel-event-select – codebreaker

Смежные вопросы