2012-03-02 11 views
5

Ho creato una griglia con extjs 4. La selezione.CheckboxModel è implementata per. Ciò significa che la riga viene selezionata/deselezionata ovunque clicchi sulla riga specifica. Ora voglio disabilitare questa selezione sull'ultima colonna poiché contiene pulsanti personalizzati. (Non voglio selezionare la riga se si fa clic su un pulsante).ExtJS 4 - Grid - Disabilita la selezione righe per colonna specifica

Qualche idea è come si fa?

Molte grazie in anticipo!

risposta

9

Questo è in realtà un piccolo problema difficile, se non altro perché manca la documentazione Sencha.

CheckboxMod ha effettivamente un evento beforeselect ereditato da Ext.selection.RowModel. Tuttavia, non esiste un modo semplice per ottenere l'indice della colonna perché francamente, questo è il punto di RowModel.

Tuttavia, c'è un evento non documentato in Ext.view.Table (che verrà ereditato dalla rete) chiamato beforecellmousedown. Ecco i parametri di evento:

  1. vista: La vista della griglia
  2. delle cellule: La cella che è stato cliccato
  3. cellIndex: Indice della cella
  4. registrazione: La Record Store associato alla cella
  5. fila: la riga della cella
  6. rowIndex: indice della riga
  7. eOpts: opzione evento standard evento

Così si sarebbe probabilmente provare qualcosa di simile:

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

Sia la cella di riga e gli indici partono da zero.

+0

Grazie Eric! Lo proverò! – user1245146

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

Grazie Eric. Questa è la soluzione finale!