Locale

Language
English
English
English
French
German
German
German
Italian
Korean
Spanish
Catalan
Dutch
Portuguese
Portuguese
Arabic
Arabic
Bulgarian
Bangla
Bosnian
Czech
Greek
Estonian
Persian
Finnish
Danish
Hindi
Indonesian
Icelandic
Croatian
Japanese
Hungarian
Hebrew
Georgian
Central Kurdish
Khmer
Kyrgyz
Kazakh
Lithuanian
Latvian
Malay
Norwegian
Polish
Romanian
Russian
Slovak
Slovenian
Serbian
Serbian
Swedish
Thai
Turkish
Ukrainian
Uzbek
Vietnamese
Chinese
Chinese

Input Style

Free Themes

Built-in component themes created by the PrimeFaces Theme Designer.

Saga Saga
Vela Vela
Arya Arya

Legacy Free Themes

Luna Amber Luna Amber
Luna Blue Luna Blue
Luna Green Luna Green
Luna Pink Luna Pink
Nova Nova
Nova Nova Alt
Nova Nova Accent

DataTable Scroll

Both vertical and horizontal scrolling of the data is supported with optional frozen rows-columns and on-demand loading features.

Vertical
NameCountryRepresentativeStatus
Maria MarrierRussiaBernardo Dominic PROPOSAL
David DarakjyUnited KingdomElwin Sharvill NEGOTIATION
Johnson SergiRussiaAnna Fali RENEWAL
Claire TollnerRussiaIvan Magalhaes NEW
Arvin AlbaresIndiaXuxue Feng NEW
Jones VocelkaItalyBernardo Dominic PROPOSAL
Leja CaldareraIndiaAsiya Javayant UNQUALIFIED
Greenwood BologniaAustraliaElwin Sharvill UNQUALIFIED
Stacey MacleadBrazilAnna Fali NEGOTIATION
Stacey MacleadFranceAnna Fali QUALIFIED
Costa DilliardCanadaIvan Magalhaes QUALIFIED
Octavia MaletRussiaStephen Shaw PROPOSAL
Arvin AlbaresCanadaIvan Magalhaes QUALIFIED
Greenwood BologniaFranceAsiya Javayant QUALIFIED
Morrow RutaBrazilIoni Bowcher NEW
Misaki RoysterJapanAmy Elsner UNQUALIFIED
Chavez BriddickFranceOnyama Limba UNQUALIFIED
Silvio SlusarskiJapanElwin Sharvill NEGOTIATION
Murillo MaletBrazilIoni Bowcher UNQUALIFIED
Aditya KuskoBrazilIvan Magalhaes RENEWAL
Murillo MaletJapanBernardo Dominic UNQUALIFIED
Stacey MacleadRussiaIoni Bowcher NEGOTIATION
Aika InouyeAustraliaAsiya Javayant NEW
Faith GillianJapanAsiya Javayant QUALIFIED
Alejandro PerinArgentinaStephen Shaw UNQUALIFIED
Clifford RimBrazilAmy Elsner QUALIFIED
Rodrigues CampainJapanOnyama Limba PROPOSAL
Sinclair WaycottIndiaXuxue Feng PROPOSAL
Aditya KuskoGermanyIoni Bowcher PROPOSAL
Emily WhobreySpainXuxue Feng QUALIFIED
Leon OldroydJapanIvan Magalhaes QUALIFIED
Aruna FigeroaRussiaAsiya Javayant NEW
Kaitlin OstroskyAustraliaAsiya Javayant QUALIFIED
Johnson SergiItalyAnna Fali PROPOSAL
Arvin AlbaresIndiaXuxue Feng NEGOTIATION
Faith GillianCanadaElwin Sharvill NEW
Darci PoquetteAustraliaIvan Magalhaes RENEWAL
Kaitlin OstroskyUnited KingdomAmy Elsner NEGOTIATION
Aruna FigeroaCanadaElwin Sharvill PROPOSAL
Jefferson SchemmerFranceAnna Fali UNQUALIFIED
Jones VocelkaJapanAnna Fali QUALIFIED
Maisha RulapaughRussiaOnyama Limba PROPOSAL
Morrow RutaSpainIoni Bowcher NEW
Maria MarrierFranceAmy Elsner NEW
Deepesh ChuiJapanElwin Sharvill NEW
David DarakjySpainStephen Shaw PROPOSAL
James ButtJapanXuxue Feng UNQUALIFIED
Faith GillianArgentinaIoni Bowcher PROPOSAL
Jennifer AmigonFranceIoni Bowcher PROPOSAL
Salvatore StockhamBrazilBernardo Dominic PROPOSAL
Horizontal
NameCountryRepresentativeStatus
Julie StensethFranceXuxue Feng NEW
Morrow RutaUnited KingdomElwin Sharvill RENEWAL
Darci PoquetteIndiaStephen Shaw RENEWAL
Aditya KuskoFranceIvan Magalhaes UNQUALIFIED
Morrow RutaItalyElwin Sharvill QUALIFIED
Mujtaba NickaCanadaAnna Fali UNQUALIFIED
Jones VocelkaCanadaIoni Bowcher QUALIFIED
Antonio CaudyItalyIvan Magalhaes NEGOTIATION
Juan WieserArgentinaIvan Magalhaes QUALIFIED
Munro FerenczBrazilElwin Sharvill PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Maria MarrierAustralia2026-04-08King, Christopher A Esq RENEWAL97Xuxue Feng
1001Costa DilliardCanada2026-04-04Truhlar And Truhlar Attys RENEWAL70Bernardo Dominic
1002Rodrigues CampainIndia2026-04-14Rangoni Of Florence QUALIFIED79Onyama Limba
1003Costa DilliardGermany2026-04-20King, Christopher A Esq RENEWAL42Ioni Bowcher
1004James ButtCanada2026-04-30Morlong Associates UNQUALIFIED93Bernardo Dominic
1005Izzy GarufiGermany2026-04-22Chemel, James L Cpa RENEWAL38Asiya Javayant
1006Ivar PaprockiRussia2026-04-27Buckley Miller Wright RENEWAL36Ivan Magalhaes
1007Misaki RoysterJapan2026-04-14Rousseaux, Michael Esq UNQUALIFIED84Amy Elsner
1008Costa DilliardArgentina2026-04-17Chapman, Ross E Esq QUALIFIED62Xuxue Feng
1009Faith GillianSpain2026-04-18Dorl, James J Esq QUALIFIED99Elwin Sharvill
1010Smith GlickArgentina2026-04-27Chemel, James L Cpa QUALIFIED24Anna Fali
1011Nicolas IturbideUnited Kingdom2026-04-02Chemel, James L Cpa RENEWAL15Stephen Shaw
1012Ivar PaprockiRussia2026-04-22Rousseaux, Michael Esq NEGOTIATION50Ivan Magalhaes
1013James ButtCanada2026-04-06Rangoni Of Florence QUALIFIED43Onyama Limba
1014Chavez BriddickCanada2026-04-18King, Christopher A Esq RENEWAL51Elwin Sharvill
1015Leon OldroydFrance2026-04-15Commercial Press NEGOTIATION50Anna Fali
1016Kaitlin OstroskyAustralia2026-04-13Feltz Printing Service UNQUALIFIED41Asiya Javayant
1017Maisha RulapaughArgentina2026-04-30Morlong Associates PROPOSAL70Amy Elsner
1018Nicolas IturbideJapan2026-04-12Buckley Miller Wright UNQUALIFIED8Xuxue Feng
1019Silvio SlusarskiFrance2026-04-10Feltz Printing Service PROPOSAL70Xuxue Feng
1020Johnson SergiSpain2026-04-29Rousseaux, Michael Esq QUALIFIED44Asiya Javayant
1021Greenwood BologniaCanada2026-04-23Feltz Printing Service UNQUALIFIED21Bernardo Dominic
1022Adams MorascaArgentina2026-04-14Rousseaux, Michael Esq NEGOTIATION14Xuxue Feng
1023Morrow RutaSpain2026-04-29Buckley Miller Wright PROPOSAL16Bernardo Dominic
1024Greenwood BologniaUnited Kingdom2026-04-06Feiner Bros RENEWAL10Elwin Sharvill
1025Wickens NestleRussia2026-04-24Feltz Printing Service NEW22Amy Elsner
1026Morrow RutaCanada2026-04-22Benton, John B Jr UNQUALIFIED67Xuxue Feng
1027Smith GlickCanada2026-04-30Printing Dimensions UNQUALIFIED88Amy Elsner
1028Cody SaylorsCanada2026-04-05Feltz Printing Service RENEWAL90Stephen Shaw
1029Faith GillianUnited Kingdom2026-04-22Rousseaux, Michael Esq QUALIFIED6Amy Elsner
1030Morrow RutaBrazil2026-04-13Commercial Press QUALIFIED24Xuxue Feng
1031Cody SaylorsBrazil2026-04-17Benton, John B Jr NEGOTIATION67Elwin Sharvill
1032Stacey MacleadUnited Kingdom2026-04-21Printing Dimensions PROPOSAL80Ioni Bowcher
1033Jennifer AmigonJapan2026-04-27Dorl, James J Esq NEW55Onyama Limba
1034Costa DilliardBrazil2026-04-02Feltz Printing Service PROPOSAL76Ivan Magalhaes
1035David DarakjyAustralia2026-04-04Rangoni Of Florence RENEWAL84Amy Elsner
1036Misaki RoysterSpain2026-04-27Chapman, Ross E Esq RENEWAL48Amy Elsner
1037Julie StensethRussia2026-04-27Chemel, James L Cpa NEGOTIATION5Stephen Shaw
1038Ivar PaprockiFrance2026-04-26Truhlar And Truhlar Attys PROPOSAL96Anna Fali
1039Aika InouyeUnited Kingdom2026-04-08Morlong Associates NEW99Xuxue Feng
1040Murillo MaletIndia2026-04-21Morlong Associates PROPOSAL45Amy Elsner
1041Emily WhobreyGermany2026-04-08Feiner Bros RENEWAL46Elwin Sharvill
1042Silvio SlusarskiAustralia2026-04-03Benton, John B Jr NEW10Xuxue Feng
1043Leon OldroydIndia2026-04-30Printing Dimensions NEW86Anna Fali
1044Juan WieserIndia2026-04-26Dorl, James J Esq QUALIFIED82Elwin Sharvill
1045Ivar PaprockiAustralia2026-04-09Feltz Printing Service NEGOTIATION53Ioni Bowcher
1046Claire TollnerJapan2026-04-03Feltz Printing Service UNQUALIFIED10Amy Elsner
1047Aika InouyeAustralia2026-04-01Truhlar And Truhlar Attys NEGOTIATION54Elwin Sharvill
1048Deepesh ChuiAustralia2026-04-12Chemel, James L Cpa NEW21Amy Elsner
1049Smith GlickGermany2026-04-16Truhlar And Truhlar Attys UNQUALIFIED72Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Claire TollnerItalyStephen Shaw NEGOTIATION
Greenwood BologniaRussiaAnna Fali PROPOSAL
Kaitlin OstroskyUnited KingdomIvan Magalhaes PROPOSAL
Rodrigues CampainUnited KingdomAmy Elsner PROPOSAL
Johnson SergiJapanOnyama Limba UNQUALIFIED
Jefferson SchemmerFranceIoni Bowcher RENEWAL
Kadeem FlosiFranceAnna Fali QUALIFIED
Sinclair WaycottAustraliaXuxue Feng PROPOSAL
Jefferson SchemmerBrazilIoni Bowcher RENEWAL
Murillo MaletUnited KingdomAsiya Javayant NEW
Chavez BriddickItalyIvan Magalhaes NEW
Wickens NestleJapanElwin Sharvill NEW
Greenwood BologniaItalyIoni Bowcher UNQUALIFIED
Juan WieserFranceIoni Bowcher RENEWAL
Faith GillianGermanyAnna Fali NEGOTIATION
Jeanfrancois VenereArgentinaStephen Shaw PROPOSAL
Nicolas IturbideFranceAnna Fali QUALIFIED
Deepesh ChuiIndiaAmy Elsner NEW
Leon OldroydFranceBernardo Dominic RENEWAL
Jones VocelkaGermanyAmy Elsner NEW
Jefferson SchemmerUnited KingdomStephen Shaw UNQUALIFIED
Misaki RoysterAustraliaIvan Magalhaes UNQUALIFIED
Kadeem FlosiAustraliaAnna Fali NEW
Adams MorascaCanadaStephen Shaw NEGOTIATION
Rodrigues CampainBrazilAsiya Javayant NEW
Izzy GarufiGermanyAmy Elsner UNQUALIFIED
Wickens NestleRussiaAsiya Javayant NEGOTIATION
Maria MarrierJapanOnyama Limba UNQUALIFIED
Claire TollnerBrazilAnna Fali PROPOSAL
Arvin AlbaresArgentinaXuxue Feng NEW
Jefferson SchemmerJapanXuxue Feng QUALIFIED
Smith GlickRussiaOnyama Limba PROPOSAL
Faith GillianJapanAsiya Javayant NEW
Jennifer AmigonIndiaBernardo Dominic PROPOSAL
Ricardo GauchoRussiaAnna Fali QUALIFIED
Kaitlin OstroskyRussiaIvan Magalhaes PROPOSAL
Antonio CaudyIndiaElwin Sharvill RENEWAL
Aika InouyeRussiaOnyama Limba NEGOTIATION
Darci PoquetteBrazilElwin Sharvill UNQUALIFIED
Darci PoquetteFranceAsiya Javayant NEGOTIATION
Mayumi KolmetzRussiaAmy Elsner PROPOSAL
Leja CaldareraItalyAsiya Javayant QUALIFIED
Antonio CaudyGermanyAsiya Javayant PROPOSAL
Ricardo GauchoItalyOnyama Limba QUALIFIED
Clifford RimArgentinaAmy Elsner QUALIFIED
Chavez BriddickRussiaAmy Elsner RENEWAL
Morrow RutaBrazilXuxue Feng NEW
Johnson SergiIndiaElwin Sharvill NEGOTIATION
Ivar PaprockiItalyStephen Shaw NEGOTIATION
Rodrigues CampainBrazilStephen Shaw NEW
Frozen Columns
Name
Isabel Bowley
Emily Whobrey
Ricardo Gaucho
Sinclair Waycott
Sinclair Waycott
Stacey Maclead
Leja Caldarera
Cody Saylors
Isabel Bowley
Leon Oldroyd
James Butt
Wickens Nestle
Wickens Nestle
Antonio Caudy
Aditya Kusko
Kadeem Flosi
Stacey Maclead
Aditya Kusko
Leja Caldarera
Jefferson Schemmer
Mujtaba Nicka
Smith Glick
Jennifer Amigon
Mujtaba Nicka
Mayumi Kolmetz
Darci Poquette
Ricardo Gaucho
Deepesh Chui
Deepesh Chui
Deepesh Chui
Ricardo Gaucho
Aditya Kusko
Ashley Doe
Cody Saylors
Emily Whobrey
Antonio Caudy
Ivar Paprocki
Darci Poquette
Munro Ferencz
Izzy Garufi
Misaki Royster
Mayumi Kolmetz
Nicolas Iturbide
James Butt
Murillo Malet
Salvatore Stockham
Maisha Rulapaugh
Claire Tollner
Deepesh Chui
Alejandro Perin
IdCountryDate
1000Spain2026-04-04
1001France2026-04-18
1002United Kingdom2026-04-20
1003Canada2026-04-19
1004Japan2026-04-30
1005Australia2026-04-12
1006Japan2026-04-17
1007Argentina2026-04-04
1008Germany2026-04-20
1009Argentina2026-04-26
1010Germany2026-04-21
1011France2026-04-02
1012Brazil2026-04-23
1013Germany2026-04-04
1014Argentina2026-04-02
1015Canada2026-04-26
1016Germany2026-04-25
1017India2026-04-03
1018Canada2026-04-09
1019United Kingdom2026-04-15
1020Russia2026-04-25
1021Spain2026-04-16
1022Canada2026-04-27
1023Canada2026-04-07
1024Canada2026-04-09
1025Canada2026-04-02
1026France2026-04-21
1027Japan2026-04-30
1028United Kingdom2026-04-04
1029Canada2026-04-27
1030Japan2026-04-30
1031Russia2026-04-21
1032Italy2026-04-06
1033Russia2026-04-19
1034Russia2026-04-07
1035Canada2026-04-28
1036Australia2026-04-20
1037Australia2026-04-20
1038Spain2026-04-14
1039France2026-04-09
1040Brazil2026-04-09
1041India2026-04-12
1042Japan2026-04-25
1043Argentina2026-04-04
1044Italy2026-04-09
1045India2026-04-20
1046France2026-04-03
1047France2026-04-18
1048Japan2026-04-12
1049United Kingdom2026-04-16

On-Demand Data

NameIdCountryDate
Smith Glick1000Spain2026-04-11
Faith Gillian1001Italy2026-04-16
Julie Stenseth1002Italy2026-04-10
Alejandro Perin1003Brazil2026-04-29
Kadeem Flosi1004Italy2026-04-12
Wickens Nestle1005Brazil2026-04-28
Antonio Caudy1006Canada2026-04-24
Smith Glick1007United Kingdom2026-04-09
Leon Oldroyd1008France2026-04-21
Costa Dilliard1009Australia2026-04-16
Morrow Ruta1010Australia2026-04-05
Juan Wieser1011India2026-04-22
Chavez Briddick1012France2026-04-05
Arvin Albares1013Russia2026-04-13
Kaitlin Ostrosky1014Japan2026-04-20
Leon Oldroyd1015United Kingdom2026-04-25
Julie Stenseth1016Canada2026-04-10
Isabel Bowley1017Argentina2026-04-29
Izzy Garufi1018Japan2026-04-28
Octavia Malet1019Italy2026-04-28
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Francesco ShinkoBrazilIoni Bowcher RENEWAL
Alejandro PerinItalyAmy Elsner PROPOSAL
Misaki RoysterAustraliaXuxue Feng RENEWAL
Misaki RoysterIndiaIvan Magalhaes RENEWAL
Adams MorascaArgentinaIvan Magalhaes PROPOSAL
Jennifer AmigonFranceAmy Elsner NEW
Mujtaba NickaGermanyXuxue Feng PROPOSAL
Aditya KuskoItalyAmy Elsner RENEWAL
Maisha RulapaughJapanBernardo Dominic NEW
Izzy GarufiCanadaIvan Magalhaes RENEWAL
Maisha RulapaughFranceStephen Shaw NEGOTIATION
Stacey MacleadGermanyXuxue Feng NEW
Juan WieserGermanyStephen Shaw UNQUALIFIED
Murillo MaletCanadaAsiya Javayant QUALIFIED
Misaki RoysterAustraliaStephen Shaw RENEWAL
Claire TollnerCanadaAsiya Javayant NEW
Francesco ShinkoCanadaAnna Fali UNQUALIFIED
Aditya KuskoAustraliaAsiya Javayant QUALIFIED
Mayumi KolmetzIndiaIvan Magalhaes UNQUALIFIED
Ivar PaprockiIndiaXuxue Feng RENEWAL
Maisha RulapaughBrazilOnyama Limba PROPOSAL
Silvio SlusarskiCanadaIoni Bowcher QUALIFIED
Jefferson SchemmerJapanBernardo Dominic RENEWAL
Clifford RimUnited KingdomAmy Elsner UNQUALIFIED
Johnson SergiArgentinaOnyama Limba NEW
Maisha RulapaughArgentinaStephen Shaw QUALIFIED
Tony FollerJapanXuxue Feng PROPOSAL
Darci PoquetteCanadaAsiya Javayant QUALIFIED
Maria MarrierRussiaXuxue Feng UNQUALIFIED
Aruna FigeroaBrazilAmy Elsner QUALIFIED
Tony FollerCanadaAmy Elsner UNQUALIFIED
Greenwood BologniaAustraliaElwin Sharvill QUALIFIED
Aruna FigeroaSpainXuxue Feng NEGOTIATION
Clifford RimIndiaOnyama Limba RENEWAL
Arvin AlbaresGermanyStephen Shaw RENEWAL
Claire TollnerBrazilXuxue Feng NEW
Johnson SergiArgentinaIvan Magalhaes PROPOSAL
Clifford RimRussiaAnna Fali UNQUALIFIED
Kadeem FlosiIndiaElwin Sharvill RENEWAL
Arvin AlbaresRussiaAnna Fali NEW

<style>
    .ui-datatable-frozenlayout-left {
        width: 20%;
    }

    .ui-datatable-frozenlayout-right {
        width: 80%;
    }
</style>


<h:form>
    <div class="card">
        <h5 style="margin-top:0">Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers1}" scrollable="true" scrollHeight="250">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers2}" scrollable="true" scrollWidth="600">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Horizontal and Vertical</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers3}" scrollable="true" scrollWidth="50%" scrollHeight="250">
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
            <p:column headerText="Company" footerText="Company">
                <h:outputText value="#{customer.company}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
            <p:column headerText="Activity" footerText="Activity">
                <h:outputText value="#{customer.activity}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers4}" scrollable="true" scrollHeight="250"
                     frozenRows="2">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Frozen Columns</h5>
        <p:dataTable var="customer" value="#{dtScrollView.customers5}" scrollable="true" scrollHeight="250"
                     scrollWidth="300" frozenColumns="1">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h3>On-Demand Data</h3>
        <p:dataTable var="customer" value="#{dtScrollView.customers6}" scrollRows="20" scrollable="true" liveScroll="true" scrollHeight="150">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Id" footerText="Id">
                <h:outputText value="#{customer.id}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Date" footerText="Date">
                <h:outputText value="#{customer.date}"/>
            </p:column>
        </p:dataTable>
    </div>

    <div class="card">
        <h5>Virtual Scrolling - 20000 Rows</h5>
        <p:dataTable var="customer" value="#{dtScrollView.lazyModel}" scrollRows="20" scrollable="true"
                     virtualScroll="true" scrollHeight="200" rows="40" style="margin-bottom:0">
            <p:column headerText="Name" footerText="Name">
                <h:outputText value="#{customer.name}"/>
            </p:column>
            <p:column headerText="Country" footerText="Country">
                <h:outputText value="#{customer.country}"/>
            </p:column>
            <p:column headerText="Representative" footerText="Representative">
                <h:outputText value="#{customer.representative.name}"/>
            </p:column>
            <p:column headerText="Status" footerText="Status">
                <span class="customer-badge status-#{customer.status.statusName}">#{customer.status}</span>
            </p:column>
        </p:dataTable>
    </div>

</h:form>