diff --git a/src/Source/Plugins/grid.selector.js b/src/Source/Plugins/grid.selector.js index b8348584..21169125 100644 --- a/src/Source/Plugins/grid.selector.js +++ b/src/Source/Plugins/grid.selector.js @@ -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