Skip to content

Commit 7874306

Browse files
committed
fix(grid): Selecting only filtered rows #6260
1 parent 0faffd9 commit 7874306

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

projects/igniteui-angular/src/lib/core/grid-selection.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Injectable, EventEmitter, NgZone } from '@angular/core';
2-
import { IGridEditEventArgs } from '../grids/grid-base.component';
2+
import { IGridEditEventArgs, IgxGridBaseComponent } from '../grids/grid-base.component';
33

44
export interface GridSelectionRange {
55
rowStart: number;
@@ -688,7 +688,9 @@ export class IgxGridSelectionService {
688688
}
689689

690690
private isFilteringApplied(): boolean {
691-
return this.grid.filteringExpressionsTree.filteringOperands.length > 0;
691+
const grid = this.grid as IgxGridBaseComponent;
692+
return grid.filteringExpressionsTree.filteringOperands.length > 0 ||
693+
grid.advancedFilteringExpressionsTree && grid.advancedFilteringExpressionsTree.filteringOperands.length > 0;
692694
}
693695

694696
private isRowDeleted(rowID): boolean {

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import { GridFunctions, GridSelectionFunctions } from '../../test-utils/grid-fun
1919
import { SampleTestData } from '../../test-utils/sample-test-data.spec';
2020
import { GridSelectionMode } from '../common/enums';
2121
import { IgxRowSelectorsModule } from '../igx-row-selectors.module';
22+
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
23+
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
2224

2325
const DEBOUNCETIME = 30;
2426

@@ -1671,6 +1673,40 @@ describe('IgxGrid - Row Selection #grid', () => {
16711673
expect(grid.getRowByIndex(1).selected).toBeTruthy();
16721674
expect(grid.onRowSelectionChange.emit).toHaveBeenCalledTimes(6);
16731675
}));
1676+
1677+
fit('Should select only filtered records', async() => {
1678+
grid.height = '1100px';
1679+
const tree = new FilteringExpressionsTree(FilteringLogic.And);
1680+
tree.filteringOperands.push({
1681+
fieldName: 'UnitsInStock',
1682+
searchVal: 0,
1683+
condition: IgxNumberFilteringOperand.instance().condition('greaterThan'),
1684+
});
1685+
tree.filteringOperands.push({
1686+
fieldName: 'ProductName',
1687+
searchVal: 'a',
1688+
condition: IgxStringFilteringOperand.instance().condition('contains'),
1689+
ignoreCase: true
1690+
});
1691+
grid.advancedFilteringExpressionsTree = tree;
1692+
GridSelectionFunctions.headerCheckboxClick(grid);
1693+
fix.detectChanges();
1694+
grid.cdr.detectChanges();
1695+
await wait();
1696+
1697+
expect(grid.rowList.length).toBe(9);
1698+
expect(grid.selectedRows().length).toBe(9);
1699+
GridSelectionFunctions.verifyHeaderRowCheckboxState(grid, true, false);
1700+
1701+
grid.advancedFilteringExpressionsTree = null;
1702+
fix.detectChanges();
1703+
grid.cdr.detectChanges();
1704+
await wait();
1705+
1706+
expect(grid.rowList.length).toBe(19);
1707+
expect(grid.selectedRows().length).toBe(9);
1708+
GridSelectionFunctions.verifyHeaderRowCheckboxState(grid, false, true);
1709+
});
16741710
});
16751711

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

0 commit comments

Comments
 (0)