Skip to content

Commit 8b6bfd1

Browse files
Merge pull request #14806 from IgniteUI/mkirkova/fix-14724-17.2.x
Clear selected rows correctly when a row is updated and filtering is applied - 17.2.x
2 parents 818aa7b + 7f24f9c commit 8b6bfd1

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

projects/igniteui-angular/src/lib/grids/grid/grid-row-selection.spec.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { TestBed, fakeAsync, tick, waitForAsync, ComponentFixture } from '@angul
22
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
33
import { IgxGridComponent } from './grid.component';
44
import { wait, UIInteractions } from '../../test-utils/ui-interactions.spec';
5-
import { IgxStringFilteringOperand, IgxNumberFilteringOperand } from '../../data-operations/filtering-condition';
5+
import { IgxStringFilteringOperand, IgxNumberFilteringOperand, IgxBooleanFilteringOperand } from '../../data-operations/filtering-condition';
66
import { configureTestSuite } from '../../test-utils/configure-suite';
77
import {
88
RowSelectionComponent,
@@ -2139,6 +2139,27 @@ describe('IgxGrid - Row Selection #grid', () => {
21392139
GridSelectionFunctions.verifyHeaderRowCheckboxState(fix, true, false);
21402140
expect(grid.selectedRows.length).toBe(grid.data.length);
21412141
});
2142+
2143+
it('Should deselect updated row with header checkbox when batchEditing is enbaled and filtering is applied', () => {
2144+
grid.batchEditing = true;
2145+
grid.selectRows([1]);
2146+
grid.filter('InStock', null, IgxBooleanFilteringOperand.instance().condition('true'));
2147+
fix.detectChanges();
2148+
2149+
const row = grid.gridAPI.get_row_by_index(0);
2150+
GridSelectionFunctions.verifyRowSelected(row);
2151+
2152+
grid.updateRow({ ProductID: 1, ProductName: 'test', InStock: true, UnitsInStock: 1, OrderDate: new Date('2019-03-01') }, 1);
2153+
fix.detectChanges();
2154+
2155+
GridSelectionFunctions.clickHeaderRowCheckbox(fix);
2156+
fix.detectChanges();
2157+
GridSelectionFunctions.verifyRowSelected(row);
2158+
2159+
GridSelectionFunctions.clickHeaderRowCheckbox(fix);
2160+
fix.detectChanges();
2161+
GridSelectionFunctions.verifyRowSelected(row, false);
2162+
});
21422163
});
21432164

21442165
describe('Integration with CRUD and transactions', () => {

projects/igniteui-angular/src/lib/grids/selection/selection.service.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,14 @@ export class IgxGridSelectionService {
426426
const selectedRows = this.getSelectedRowsData();
427427
const removedRec = this.isFilteringApplied() ?
428428
this.allData.filter(row => this.isRowSelected(this.getRecordKey(row))) : selectedRows;
429-
const newSelection = this.isFilteringApplied() ? selectedRows.filter(x => !removedRec.includes(x)) : [];
429+
let newSelection;
430+
if (this.grid.primaryKey) {
431+
newSelection = this.isFilteringApplied() ? selectedRows.filter(x => {
432+
return !removedRec.some(item => item[this.grid.primaryKey] === x[this.grid.primaryKey]);
433+
}) : [];
434+
} else {
435+
newSelection = this.isFilteringApplied() ? selectedRows.filter(x => !removedRec.includes(x)) : [];
436+
}
430437
this.emitRowSelectionEvent(newSelection, [], removedRec, event, selectedRows);
431438
}
432439

0 commit comments

Comments
 (0)