Skip to content

Commit

Permalink
use sort events to update selected rows because we use row index rath…
Browse files Browse the repository at this point in the history
…er than the row itself.
  • Loading branch information
pagameba committed Dec 17, 2010
1 parent 23ae587 commit 53ec366
Showing 1 changed file with 27 additions and 7 deletions.
34 changes: 27 additions & 7 deletions src/Source/Plugins/grid.selector.js
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@ Jx.Plugin.Grid.Selector = new Class({

name: 'Selector',

Binds: ['select','checkSelection','checkAll','afterGridRender','onCellClick', 'sort', 'updateCheckColumn'],
Binds: ['select','checkSelection','checkAll','afterGridRender','onCellClick', 'sort', 'updateCheckColumn', 'updateSelectedRows'],

options : {
/**
@@ -118,7 +118,8 @@ Jx.Plugin.Grid.Selector = new Class({
template;
this.grid = grid;


this.grid.addEvent('gridSortFinished', this.updateSelectedRows);

//setup check column if needed
if (options.useCheckColumn) {
grid.addEvent('gridDrawRow', this.updateCheckColumn);
@@ -241,12 +242,15 @@ Jx.Plugin.Grid.Selector = new Class({
this.checkColumn.destroy();
this.checkColumn = null;
}
}
if (options.useCheckColumn) {
if (options.checkAsHeader) {
grid.row.options.headerColumn = this.oldHeaderColumn;
if (options.useCheckColumn) {
grid.removeEvent('gridDrawRow', this.updateCheckColumn);
if (options.checkAsHeader) {
grid.row.options.headerColumn = this.oldHeaderColumn;
}
}
}
this.grid.removeEvent('gridSortFinished', this.updateSelectedRows);

this.grid = null;
},
/**
@@ -278,8 +282,10 @@ Jx.Plugin.Grid.Selector = new Class({
selected.set('cells',[]);
} else if (opt === 'row') {
this.getSelectedRows().each(function(row){
idx = row.retrieve('jxRowData').row;
row.removeClass('jxGridRowSelected');
});
this.setCheckField(idx,false);
}, this);
selected.set('rows',[]);
selected.get('rowHeads').each(function(rowHead){
rowHead.removeClass('jxGridRowHeaderSelected');
@@ -357,6 +363,20 @@ Jx.Plugin.Grid.Selector = new Class({
}
},

updateSelectedRows: function() {
if (!this.options.row) { return; }
var options = this.options,
r = this.grid.gridTableBody.rows,
rows = [];

for (var i=0; i<r.length; i++) {
if (r[i].hasClass('jxGridRowSelected')) {
rows.push(i);
}
}
this.selected.set('rows', rows);
},

/**
* Method: selectRow
* Select a row and apply the jxGridRowSelected style to it.

0 comments on commit 53ec366

Please sign in to comment.