Visualization issue when selecting "All items" from grid pager

Hello,

this is my grid:

<ejs-grid #grid id='plantsGrid' [dataSource]='italgasExistingPlants' locale='it-iT' 
allowPaging='true' enableInfiniteScrolling='true' height=700 
[pageSettings]='initialPage' [allowFiltering]='true' [filterSettings]='filterOption'
[allowSorting]='true' [allowGrouping]='true' [allowPdfExport]='true' 
allowTextWrap='true' [textWrapSettings]='wrapSettings' (dataBound)='dataBound()'
[allowExcelExport]='true' [toolbar]='toolbarOptions' (toolbarClick)='toolbarClick($event)'
(created)='setHeaderHeight($event)' (queryCellInfo)='tooltip($event)'
(actionComplete)='actionComplete($event)'>
    <e-columns>
        <e-column field='statoComunicazione' headerText='1' width=30 textAlign='Center'>
            <ng-template #template let-data>
                <div class="image">
                    <img src="../../assets/images/imgC{{data.statoComunicazione}}.png" alt="imgC{{data.statoComunicazione}}"/>
                </div>
            </ng-template>
        </e-column>
        <e-column field='statoAllarmi' headerText='2' width=30 textAlign='Center'>
            <ng-template #template let-data>
                <div class="image">
                    <img src="../../assets/images/imgA{{data.statoAllarmi}}.png" alt="imgA{{data.statoAllarmi}}"/>
                </div>
            </ng-template>
        </e-column>   
        <e-column field='gruppo' headerText='Gruppo' textAlign='Center' width=80></e-column>        
        <e-column field='nome' headerText='Ragione sociale' textAlign='Center' width=90></e-column>
        <e-column field='pdr' headerText='PUF' textAlign='Center' width=100></e-column>
        <e-column field='ldn' headerText='Logical device name' textAlign='Center' width=90></e-column>
        <e-column field='tipo' headerText='Tipo' textAlign='Center' width=70></e-column>
        <e-column field='volumiMisurati' headerText='Totalizzatore' textAlign='Center' width=95></e-column>
        <e-column field='volumiConvertiti' headerText='Backflow' textAlign='Center' width=85></e-column>
        <e-column field='matricolaContatore' headerText='Matricola' textAlign='Center' width=90></e-column>
        <e-column field='ultimoCollegamento' headerText='Ultimo collegamento' textAlign='Center' width=100></e-column>
        <e-column field='qualitaSegnale' headerText='Qualità segnale' textAlign='Center' width=80></e-column>
        <e-column field='livelloSegnale' headerText='Livello segnale' textAlign='Center' width=80></e-column>
        <e-column field='batteriaMisura' headerText='Batteria' textAlign='Center' width=85></e-column>
        <e-column field='versioneFirmware' headerText='Versione firmware' textAlign='Center' width=85></e-column>
    </e-columns>
</ejs-grid>


When I select "All items" form the pager dropdown, grid doesn't show all the items and I see blank space after some visible items. the grid seems to freeze.

The datasource is returned from the followinga controller method:

dashboard.component.ts

ngOnInit(): void {
    this.loadItalgasExistingPlants();
...
  }


  loadItalgasExistingPlants() {
    this.plantsService.getAllItalgasExistingPlants().subscribe(plants => {
      this.italgasExistingPlants = plants;
...
    })
  } 


controller:

        public async Task<IEnumerable<ItalgasPlantDto>> GetAllItalgasPlantsAsync()
        {
            int giorni = 0;

            //var plants = await _context.Plants.ToListAsync();
            var plants = await (from p in _context.Plants
                               select new
                               {
                                   p.XmlData
                               }).ToListAsync();

            IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

            List<ItalgasPlantDtoallItalgasPlants = new List<ItalgasPlantDto>();

            foreach (var p in plants)
            {
                if (p.XmlData != null)
                {
                    ExistingPlants italgasPlants = (ExistingPlants)formatter.Deserialize(new MemoryStream(p.XmlData.ToArray()));
                    //ItalgasPlantDto italgasPlantDto = _mapper.Map<ItalgasPlantDto>(italgasPlants);

                    ItalgasPlantDto italgasPlantDto = new ItalgasPlantDto();
                    italgasPlantDto.GuidImpianto = italgasPlants.GuidImpianto;
                    italgasPlantDto.Gruppo = italgasPlants.Gruppo;
                    italgasPlantDto.Nome = italgasPlants.Nome;
                    italgasPlantDto.Pdr = italgasPlants.PdR;
                    italgasPlantDto.LDN = italgasPlants.LDN;
                    italgasPlantDto.Tipo = italgasPlants.Ubicazione?.distretto;
                    italgasPlantDto.LivelloSegnale = (italgasPlants.AltriDati != null && italgasPlants.AltriDati.Count >= 4) ? italgasPlants.AltriDati[4] : null;
                    italgasPlantDto.QualitaSegnale = (italgasPlants.AltriDati != null && italgasPlants.AltriDati.Count >= 5) ? italgasPlants.AltriDati[5] : null;
                    italgasPlantDto.VolumiMisurati = italgasPlants.VolumiMisurati;
                    italgasPlantDto.VolumiConvertiti = italgasPlants.VolumiConvertiti;
                    italgasPlantDto.MatricolaContatore = italgasPlants.MatricolaContatore;
                    italgasPlantDto.UltimoCollegamento = italgasPlants.UltimoCollegamento;
                    italgasPlantDto.BatteriaMisura = italgasPlants.BatteriaMisura + " giorni";
                    italgasPlantDto.VersioneFirmware = italgasPlants.VersioneFirmware;
                    //STATO ALLARMI
                    italgasPlantDto.StatoAllarmi = italgasPlants.DiagnosticaCorrente == 0 ? 0 : 1;
                    italgasPlantDto.TooltipStatoAllarmi = italgasPlants.DiagnosticaCorrente == 0 ? null : "Allarmi attivi";
                    //STATO COMUNICAZIONE
                    switch (italgasPlants.EsitoUltimaComunicazione)
                    {
                        case EnumEsitoUltimaComunicazione.EffettuataOggi:
                            // Dati ricevuti oggi correttamente
                            italgasPlantDto.StatoComunicazione = 0// "~/images/imgGreen.png"
                            italgasPlantDto.TooltipStatoComunicazione = "L'impianto ha comunicato oggi correttamente";
                            break;
                        case EnumEsitoUltimaComunicazione.DatiParziali:
                            // Dati ricevuti oggi correttamente
                            italgasPlantDto.StatoComunicazione = 1// "~/images/imgGreenYellow.png"
                            italgasPlantDto.TooltipStatoComunicazione = "L'impianto ha comunicato oggi con dati parziali";
                            break;
                        case EnumEsitoUltimaComunicazione.DatiInvalidi:
                            // Dati ricevuti oggi invalidi
                            italgasPlantDto.StatoComunicazione = 2// "~/images/imgBlue.png"                                           
                            italgasPlantDto.TooltipStatoComunicazione = "L'impianto ha ricevuto oggi dati invalidi";
                            break;
                        case EnumEsitoUltimaComunicazione.NonEffettuataOggi:
                            if (DateTime.TryParse(italgasPlants.UltimoCollegamentoout DateTime ddhhUC))
                            {
                                // Calcola il numero di giorni dall'ultima comunicazione arrotondando il valore (3,76 lo fa diventare 4 giorni)
                                giorni = (int)Math.Round(System.DateTime.Today.Subtract(ddhhUC).TotalDays0);
                                italgasPlantDto.TooltipStatoComunicazione = giorni > 1 ? String.Format("L'impianto non ha comunicato per {0} giorni"giorni) : "L'impianto non ha comunicato per 1 giorno";
                                if (giorni <= 3)
                                {
                                    italgasPlantDto.StatoComunicazione = 0// "~/images/imgGreen.png"   
                                }
                                else if (giorni > 3 && giorni <= 15)
                                {
                                    italgasPlantDto.StatoComunicazione = 3// "~/images/imgViolet.png"  
                                    italgasPlantDto.TooltipStatoComunicazione = "L'impianto non comunica da oltre 3 giorni";
                                }
                                else if (giorni > 15)
                                {
                                    italgasPlantDto.StatoComunicazione = 4// "~/images/imgRed.png"  
                                    italgasPlantDto.TooltipStatoComunicazione = "L'impianto non comunica da oltre 15 giorni";
                                }
                            }
                            else
                            {
                                italgasPlantDto.StatoComunicazione = 4// "~/images/imgRed.png" 
                                italgasPlantDto.TooltipStatoComunicazione = "Nessun dato ricevuto oggi";
                            }
                            break;
                        case EnumEsitoUltimaComunicazione.MaiComunicato:
                            // Dati ricevuti oggi invalidi
                            italgasPlantDto.StatoComunicazione = 4// "~/images/imgViolet.png"                                           
                            italgasPlantDto.TooltipStatoComunicazione = "L'impianto non ha mai comunicato";
                            break;
                        default:
                            break;
                    }

                    allItalgasPlants.Add(italgasPlantDto);
                }
            }

            return allItalgasPlants.OrderBy(p => p.LDN);
        }


The Data Tranfer Object returned by the API is this:

    public class ItalgasPlantDto
    {
        public Guid GuidImpianto { getset; }
        public int StatoComunicazione { getset; }
        public string TooltipStatoComunicazione { getset; }
        public int StatoAllarmi { getset; }
        public string TooltipStatoAllarmi { getset; }
        public string Gruppo { getset; }
        public string Nome { getset; }
        public string Pdr { getset; }
        public string LDN { getset; }
        public string Tipo { getset; }
        public string VolumiConvertiti { getset; }
        public string VolumiMisurati { getset; }
        public string MatricolaContatore { getset; }
        public string UltimoCollegamento { getset; }
        public string QualitaSegnale { getset; }
        public string LivelloSegnale { getset; }
        public string BatteriaMisura { getset; }
        public string VersioneFirmware { getset; }                
    }

On the database I have about 1700 plants records in test environment, but in the future we'll have much more plants. 

Can you help me?

Thanks in advance.


1 Reply

TS Thiyagu Subramani Syncfusion Team September 17, 2021 02:14 PM UTC

Hi CLAUDIO, 

Thanks for contacting Syncfusion support. 

From your shared information we confirm that you want to use infinite scrolling and pager dropdown in same time. But by default in EJ2 Grid there is no feasibility to use allowPaging property and pager dropdown with enableInfiniteScrolling in same time. Its default behavior of current Grid architecture. 

Please get back to us, if you need any further assistance. 

Regards, 
Thiyagu S 



Loader.
Up arrow icon