Zadawane pytanie wczoraj, ale nie otrzymując odpowiedzi na ponowne wysłanie w różnych słowach

Mam dwie kolumny z rowem podsumowującym

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' },
];

Chcę dodać wydarzenie CellClick do tych wiersza podsumowującego, aby na kliknięciu mogę otworzyć nowe okno, jeśli używam zdarzenia CellClick w siatce, działa dla wszystkich komórek z wyjątkiem tego podsumowania wiersza.

Czy jest jakieś inne wydarzenie, które mogę użyć, aby był mógł go kliknąć.

AKTUALIZACJA:

Użyłem słuchacz, który nie działa dla Wiersz

listeners: {
  cellclick: function(grid, rowIndex, cellIndex) {
    // do whatever
  },
  scope: this
}
0
Microsoft DN 29 listopad 2013, 14:05

2 odpowiedzi

Najlepsza odpowiedź

O ile wiem, nie ma wbudowanego wydarzenia dla podsumowania wiersza kliknij. Co możesz zrobić, to dodać słuchacza samego elementu komórkowego.

Możesz to łatwo zrobić za pomocą delegate opcja słuchacza. Ale ta opcja jest dostępna tylko dla zdarzeń domowych, więc musimy również użyć {x1}} opcja Aby zaczepić nasze zdarzenie na elemencie ciała siatki (alternatywnie, możesz użyć czegoś takiego jak myGrid.getEl().on({ ... })).

Oto przykład słuchaczy, które dodasz bezpośrednio do konfiguracji siatki:

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);
            }
        }
    }
}

Niestety, ten rodzaj kodu opiera się na nazwach klasowych i właściwości {x0}}, które są ustawione przez EXT, i które mogą się zmienić w przyszłości ... Trzymaj to, kiedy ulepszasz lib!

2
rixo 29 listopad 2013, 11:11

Nie jestem pewien co do kodu U użył dodawania wydarzenia dla wiersza Kliknij, ale nadal dodam ten kod do panelu siatki Mam nadzieję, że pomaga, jeśli próbowałeś już .. Edytowałem to poniżej, wierzę ..

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

            var fieldName = iView.getGridColumns()[iColIdx].dataIndex;
console.log(fieldName );
}
    }
0
codebreaker 29 listopad 2013, 10:34