views:

40

answers:

2

I'm trying to add row buttons to a grid panel. Theese buttons should capture the click event, do their stuff, and prevent the row to be selected.

The problem is that the row behaviour that changes the row selection is running before the button's event (like if the row was capturing it instead of wait to event bubbling).

Is there any way to add a row button that perform its action before the row selection to be able to cancel the event and therefore cancel any other behaviour?

Thank you in advance.

A: 

What is your intent?

  1. Is it to completely disable row selection for this grid?
  2. Or prevent row selections from "losing focus"/reseting when a row button is clicked?

If you want to disable row selection from the entire grid (1), set the config item disableSelection to true.

If you want to prevent row selections from being reset everytime the user clicks on your row buttons (2), you can extend Ext.grid.RowSelectionModel and override the initEvents method to register handleMouseDown to handle the cellmousedown instead of the rowmousedown (this will give u access to the columnIndex that originated the event) GridPanel event. Then add some logic to the handleMouseDown method to not update the row selection if the columnIndex is equal to the column index of yours row buttons. In other words, only execute the original handleMouseDown logic if the columnIndex is not equal to the column index of your row buttons.

Hope this helps.

HOCA
A: 

I hadn't got the idea of watch the column, it's very simple to register a listener to cancel the selection of rows. (I would rather the row to wait the event bubbling, but...)

Juan Fernández