2012-03-02 12 views
5

Utworzono siatkę z extjs 4. Selekcja. CheckboxModel jest zaimplementowana. Oznacza to, że wiersz jest wybierany/odznaczany, gdy klikniesz na dany wiersz. Teraz chcę wyłączyć ten wybór w ostatniej kolumnie, ponieważ zawiera przyciski niestandardowe. (Nie chcę wybierać wiersza po kliknięciu przycisku).ExtJS 4 - Grid - Wyłącz wiersz wyboru dla konkretnej kolumny

Każdy pomysł, jak to zrobić?

Wielkie dzięki z góry!

Odpowiedz

9

To naprawdę mały problem, choćby dlatego, że brakuje dokumentacji Sencha.

CheckboxModel rzeczywiście ma zdarzenie beforeselect odziedziczone po Ext.selection.RowModel. Jednak nie ma łatwego sposobu na uzyskanie indeksu kolumny, ponieważ, szczerze mówiąc, jest to kwestia RowModel.

Istnieje jednak nieudokumentowane zdarzenie w Ext.view.Table (które dziedziczy sieć) o nazwie beforecellmousedown. Oto parametry zdarzeń:

  1. Widok: Widok na swojej siatki
  2. komórek: komórki, która została kliknięciu
  3. cellIndex: Indeks komórce
  4. rekord: Rekord sklep związany z komórką
  5. wiersz: wiersz komórki
  6. rowIndex: indeks wiersza
  7. eOpts: opcja zdarzeń Standardowy przypadku

Więc pewnie spróbować czegoś takiego: indeksy

viewConfig: { 
    listeners: { 
     beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts){ 
      if(cellIdx === indexOfLastColumnInGrid){ 
       return false; 
      } 
     } 
    } 
} 

Zarówno komórkowe i rzędzie są zera.

+0

Dzięki Eric! Dam temu szansę! – user1245146

1
listeners: { 
    beforecellmousedown: function(view, cell, cellIdx, record, row, rowIdx, eOpts) { 
     if (String(eOpts.getTarget()) == '[object HTMLButtonElement]') { 
      return false; 
     } 
    } 
} 

Thanx Eric. To jest ostateczne rozwiązanie!

Powiązane problemy