created() {
document.getElementById("Grid_searchbar").addEventListener('keyup', (event) => {
clearTimeout(this.debounceTimer); // you can customize as per your requirement
this.debounceTimer
= setTimeout(() => { this.searchFun(event); }, 600);
})
}
searchFun(event) {
var value = (event.target as HTMLInputElement).value;
this.grid.search(value);
clearTimeout(this.debounceTimer);
} |
App.component.html
<ejs-grid #grid [dataSource]='data' height='315px' [selectionSettings]='selectionOptions' (dataBound)='dataBound($event)' (rowSelected)='rowSelected($event)'
(rowDeselecting)='rowDeselecting($event)'[allowPaging]='true'(rowDeselected)='rowDeselected($event)'(detailDataBound)='detailDataBound($event)' >
<e-columns>
<e-column headerText='Employee Image' width='150' textAlign='Center'>
<ng-template #headerTemplate let-data>
<div>
<ejs-switch class='headerswitch' [checked]="false" (change)='change($event)'></ejs-switch>
</div>
</ng-template>
<ng-template #template let-data>
<div class="image">
<ejs-switch [checked]="false" (change)='change($event)'></ejs-switch>
</div>
</ng-template>
</e-column>
-------
</e-columns>
</ejs-grid>
|
App.component.ts
export class AppComponent {
@ViewChild('grid') public grid: GridComponent;
public data: object[];
public selectionOptions: SelectionSettingsModel;
ngOnInit(): void {
this.data = hierarchyOrderdata;
this.selectionOptions = { type: 'Multiple', enableSimpleMultiRowSelection: true };
}
dataBound(args){
}
detailDataBound(args){
}
change(args){
if(args.event.target.closest('th')){
if(args.checked){
var allrecords = this.grid.getCurrentViewRecords();
// selecting and deselecting all the records in the grid when change the checked state of the header cell switch
for(var i=0;i<allrecords.length;i++){
if(this.grid.getSelectedRowIndexes().indexOf(i) >-1)
{
continue;
}
// selecting the records in the current page
this.grid.selectionModule.addRowsToSelection([i])
}
}else{
// clearing the selection
this.grid.clearSelection();
}
}
}
rowDeselecting(args){
// changed the checked state of the switch component
args.target.closest('tr').getElementsByClassName('e-switch')[0].ej2_instances[0].checked = false
if(args.row.length>1){
for(var i=0;i<args.row.length;i++){
args.row[i].getElementsByClassName('e-switch')[0].ej2_instances[0].checked = false
}
}
}
rowSelected(args){
// changed the checked state of the row cell switch component
args.row.getElementsByClassName('e-switch')[0].ej2_instances[0].checked = true;
if( this.grid.getCurrentViewRecords().length == this.grid.getSelectedRecords().length){
// changed the checked state of the headercell switch component
this.grid.element.getElementsByClassName('headerswitch')[0].ej2_instances[0].checked = true;
}
}
rowDeselected(args){
// changed the checked state of the headercell switch component
if( this.grid.getCurrentViewRecords().length > this.grid.getSelectedRecords().length){
this.grid.element.getElementsByClassName('headerswitch')[0].ej2_instances[0].checked = false;
}
}
}
|
rowSelected(args){
args.row.getElementsByClassName('e-switch')[0].ej2_instances[0].checked = true;
if( this.grid.getCurrentViewRecords().length == this.grid.getSelectedRecords().length){
(<any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked = true;
}
}
rowDeselected(args){
if( !(this.grid.getCurrentViewRecords().length == this.grid.getSelectedRecords().length)){
(<any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked = false;
}
}
|
checkbox
.
export class AppComponent {
@ViewChild('grid') public grid: GridComponent;
public data: object[];
public selectionOptions: SelectionSettingsModel;
ngOnInit(): void {
this.data = hierarchyOrderdata;
this.selectionOptions = { type: 'Multiple', enableSimpleMultiRowSelection: true };
}
change(args){
if(args.event.target.closest('th')){
if(args.checked){
var allrecords = this.grid.getCurrentViewRecords();
for(var i=0;i<allrecords.length;i++){
if(this.grid.getSelectedRowIndexes().indexOf(i) >-1)
{
continue;
}
this.grid.selectionModule.addRowsToSelection([i])
}
}else{
this.grid.clearSelection();
}
}
}
rowDeselecting(args){
if(args.row.length>1){
for(var i=0;i<args.row.length;i++){
args.row[i].getElementsByClassName('e-switch')[0].ej2_instances[0].checked = false
}
}
}
rowSelecting(args){
// prevent the selection when the target does not contains switch element
if( !( args.target && args.target.closest('td') && args.target.closest('td').getElementsByClassName('e-switch').length > 0 && args.target.closest('td').getElementsByClassName('e-switch')[0].ej2_instances[0].checked == true )){
if(<any>this.grid.element.getElementsByClassName('headerswitch')[0].ej2_instances[0].checked == false)
args.cancel = true;
}
}
rowSelected(args){
if (this.grid.element.getElementsByClassName('headerswitch')[0].ej2_instances[0].checked == true){
args.row.getElementsByClassName('e-switch')[0].ej2_instances[0].checked = true;
}
if( this.grid.getCurrentViewRecords().length == this.grid.getSelectedRecords().length){
( <any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked = true;
}
}
rowDeselected(args){
if( !(this.grid.getCurrentViewRecords().length == this.grid.getSelectedRecords().length)){
(<any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked = false;
}
}
}
|
rowDeselecting(args){
// prevent the deselection when the target does not contains switch element
if( !( args.target && args.target.closest('td') && args.target.closest('td').getElementsByClassName('e-switch').length > 0 && args.target.closest('td').getElementsByClassName('e-switch')[0].ej2_instances[0].checked == false )){
args.cancel = true;
}
-------
}
rowSelecting(args){
// prevent the selection when the target does not contains switch element
if( !( args.target && args.target.closest('td') && args.target.closest('td').getElementsByClassName('e-switch').length > 0 && args.target.closest('td').getElementsByClassName('e-switch')[0].ej2_instances[0].checked == true )){
if(<any>this.grid.element.getElementsByClassName('headerswitch')[0].ej2_instances[0].checked == false)
args.cancel = true;
}
}
|
rowDeselecting(args) {
if (!(args.target && args.target.closest('td') && args.target.closest('td').getElementsByClassName('e-switch').length > 0 && args.target.closest('td').getElementsByClassName('e-switch')[0].ej2_instances[0].checked == false)) {
args.cancel = true;
}
}
---------
rowDeselected(args) {
if (!(this.grid.getCurrentViewRecords().length == this.grid.getSelectedRecords().length)) {
(<any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked = false;
}
if ( args.row.length > 0 ) {
for (var i = 0; i < args.row.length; i++) {
args.row[i].getElementsByClassName('e-switch')[0].ej2_instances[0].checked = false
}
}
}
|
[app.component.html]
<ejs-grid [allowSelection]='true' [selectionSettings]='selectOptions' (dataBound)="dataBound($event)">
. . . .
</ejs-grid>
[app.component.ts]
dataBound(){
this.grid.selectRows([2,4,6])
} |
dataBound(args) {
var index = [ 2, 4, 6, 7, 10, 11]
this.grid.selectRows(index);
for (var i = 0, len = index.length; i < len; i++) {
(<any>this.grid.getRowByIndex(index[i]).getElementsByClassName('e-switch')[0]).ej2_instances[0].checked = true;
}
}
|
App.component.ts
export class AppComponent {
--------
ngOnInit(): void {
--------
}
dataBound(args) {
this.grid.selectRows([1,2,3]);
}
detailDataBound(args) {
}
change(args) {
-----
}
rowDeselecting(args) {
if (!(args.target && args.target.closest('td') && args.target.closest('td').getElementsByClassName('e-switch').length > 0 && args.target.closest('td').getElementsByClassName('e-switch')[0].ej2_instances[0].checked == false)) {
if(this.grid.selectionModule.isInteracted){
args.cancel = true;
}
}
}
rowSelecting(args) {
if (!(args.target && args.target.closest('td') && args.target.closest('td').getElementsByClassName('e-switch').length > 0 && args.target.closest('td').getElementsByClassName('e-switch')[0].ej2_instances[0].checked == true)) {
if ((<any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked == false && this.grid.selectionModule.isInteracted == true ){
args.cancel = true;
this.grid.selectionModule.isInteracted = false;
}
else{
// enable the switch component to the checked state
if(args.rowIndexes && args.rowIndexes.length > 0){
for(var i=0; i<args.rowIndexes.length ; i++ ) {
this.grid.getRows()[args.rowIndexes[i]].getElementsByClassName("e-switch")[0].ej2_instances[0].checked = true;
}
}else{
this.grid.getRows()[args.rowIndex].getElementsByClassName("e-switch")[0].ej2_instances[0].checked = true;
}
}
}
}
rowSelected(args) {
---------
}
rowDeselected(args) {
-------
}
}
}
|
rowSelecting(args) {
if(args.rowIndex != undefined){
if (!(args.target && args.target.closest('td') && args.target.closest('td').getElementsByClassName('e-switch').length
> 0 && args.target.closest('td').getElementsByClassName('e-switch')[0].ej2_instances[0].checked == true)) {
if ((<any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked == false && ( <any>
this.grid.selectionModule).isInteracted == true ){
args.cancel = true;
( <any>this.grid.selectionModule).isInteracted = false;
}
else{
if(args.rowIndexes && args.rowIndexes.length > 0){
for(var i=0; i<args.rowIndexes.length ; i++ ) {
( <any>this.grid.getRows()[args.rowIndexes[i]].getElementsByClassName("e-switch")[0]).ej2_instances[0].checked = true;
}
}else{
(<any>this.grid.getRows()[args.rowIndex].getElementsByClassName("e-switch")[0]).ej2_instances[0].checked = true;
}
}
}
}
}
rowSelected(args) {
if(args.rowIndex != undefined){
( <any>this.grid.selectionModule).isInteracted = false;
if ((<any> this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked == true) {
args.row.getElementsByClassName('e-switch')[0].ej2_instances[0].checked = true;
}
if (this.grid.getCurrentViewRecords().length == this.grid.getSelectedRecords().length) {
(<any>this.grid.element.getElementsByClassName('headerswitch')[0]).ej2_instances[0].checked = true;
}
}
}
|
change(args) {
if (args.event.target.closest('th')) {
if (args.checked) {
---------------
} else {
this.grid.clearSelection();
if (this.grid.isPersistSelection) {
var rowstoclear = this.grid.getRows();
for (var i = 0; i < rowstoclear.length; i++) {
// uncheck the switch component in the row
(<any>rowstoclear[i].getElementsByClassName('e-switch')[0]).ej2_instances[0].checked = false;
}
}
}
}
}
|