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
Mayumi KolmetzArgentinaIoni Bowcher NEGOTIATION
Adams MorascaBrazilAsiya Javayant NEGOTIATION
Munro FerenczSpainAnna Fali RENEWAL
Faith GillianSpainAmy Elsner QUALIFIED
Juan WieserGermanyIvan Magalhaes PROPOSAL
Jennifer AmigonCanadaAmy Elsner UNQUALIFIED
Johnson SergiRussiaAsiya Javayant PROPOSAL
Ashley DoeIndiaIoni Bowcher QUALIFIED
Alejandro PerinArgentinaIoni Bowcher QUALIFIED
Aditya KuskoFranceBernardo Dominic NEGOTIATION
Stacey MacleadArgentinaStephen Shaw PROPOSAL
Maria MarrierUnited KingdomAsiya Javayant PROPOSAL
Costa DilliardIndiaAnna Fali PROPOSAL
Nicolas IturbideUnited KingdomIoni Bowcher UNQUALIFIED
Wickens NestleArgentinaIvan Magalhaes RENEWAL
Juan WieserUnited KingdomIvan Magalhaes PROPOSAL
Aika InouyeFranceBernardo Dominic PROPOSAL
Greenwood BologniaJapanOnyama Limba NEW
Costa DilliardArgentinaBernardo Dominic UNQUALIFIED
Isabel BowleyIndiaAsiya Javayant NEGOTIATION
Izzy GarufiAustraliaAsiya Javayant NEGOTIATION
Darci PoquetteFranceIoni Bowcher QUALIFIED
Juan WieserArgentinaAnna Fali NEGOTIATION
Izzy GarufiUnited KingdomIvan Magalhaes NEW
Arvin AlbaresItalyStephen Shaw RENEWAL
Mujtaba NickaBrazilStephen Shaw NEGOTIATION
Leja CaldareraCanadaElwin Sharvill RENEWAL
Murillo MaletAustraliaElwin Sharvill RENEWAL
Deepesh ChuiRussiaOnyama Limba UNQUALIFIED
Darci PoquetteIndiaIoni Bowcher NEGOTIATION
Maisha RulapaughSpainBernardo Dominic QUALIFIED
Jennifer AmigonRussiaIvan Magalhaes PROPOSAL
Ivar PaprockiArgentinaElwin Sharvill NEGOTIATION
Arvin AlbaresItalyElwin Sharvill RENEWAL
Leja CaldareraSpainOnyama Limba PROPOSAL
Aditya KuskoItalyIvan Magalhaes NEGOTIATION
Misaki RoysterGermanyIvan Magalhaes RENEWAL
Jefferson SchemmerJapanStephen Shaw NEW
Kaitlin OstroskyAustraliaAmy Elsner NEW
Clifford RimIndiaAnna Fali NEGOTIATION
Silvio SlusarskiFranceAsiya Javayant UNQUALIFIED
Mayumi KolmetzSpainAnna Fali PROPOSAL
Alejandro PerinFranceStephen Shaw QUALIFIED
Francesco ShinkoAustraliaStephen Shaw PROPOSAL
Francesco ShinkoIndiaAmy Elsner NEGOTIATION
James ButtIndiaIvan Magalhaes QUALIFIED
Antonio CaudyAustraliaOnyama Limba RENEWAL
Ricardo GauchoFranceStephen Shaw UNQUALIFIED
Wickens NestleIndiaAmy Elsner NEGOTIATION
James ButtSpainIoni Bowcher RENEWAL
Horizontal
NameCountryRepresentativeStatus
Octavia MaletJapanAnna Fali RENEWAL
Adams MorascaFranceIoni Bowcher QUALIFIED
Mujtaba NickaArgentinaXuxue Feng NEGOTIATION
Sinclair WaycottAustraliaBernardo Dominic RENEWAL
Sinclair WaycottJapanIoni Bowcher QUALIFIED
Kaitlin OstroskyJapanOnyama Limba RENEWAL
Ashley DoeBrazilAnna Fali RENEWAL
Claire TollnerRussiaXuxue Feng UNQUALIFIED
Leja CaldareraUnited KingdomBernardo Dominic RENEWAL
Ivar PaprockiIndiaAmy Elsner PROPOSAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Rodrigues CampainArgentina2026-04-20Commercial Press UNQUALIFIED42Amy Elsner
1001Chavez BriddickArgentina2026-04-11King, Christopher A Esq QUALIFIED36Ioni Bowcher
1002Claire TollnerRussia2026-04-12Chapman, Ross E Esq PROPOSAL63Ioni Bowcher
1003Rodrigues CampainRussia2026-04-24King, Christopher A Esq QUALIFIED23Ivan Magalhaes
1004Faith GillianIndia2026-04-24Feiner Bros UNQUALIFIED60Anna Fali
1005Mujtaba NickaBrazil2026-04-25Rousseaux, Michael Esq NEGOTIATION52Stephen Shaw
1006Arvin AlbaresAustralia2026-04-16Chanay, Jeffrey A Esq RENEWAL23Elwin Sharvill
1007Tony FollerSpain2026-04-26Printing Dimensions NEGOTIATION0Bernardo Dominic
1008Rodrigues CampainRussia2026-04-18Commercial Press QUALIFIED64Xuxue Feng
1009David DarakjyFrance2026-04-09Dorl, James J Esq RENEWAL93Bernardo Dominic
1010Jennifer AmigonRussia2026-04-06Chemel, James L Cpa NEW12Ivan Magalhaes
1011Jones VocelkaBrazil2026-04-10Dorl, James J Esq PROPOSAL49Asiya Javayant
1012Darci PoquetteUnited Kingdom2026-04-23Commercial Press NEGOTIATION9Amy Elsner
1013Mayumi KolmetzArgentina2026-04-29Dorl, James J Esq NEGOTIATION70Stephen Shaw
1014Rodrigues CampainArgentina2026-04-18King, Christopher A Esq RENEWAL34Ivan Magalhaes
1015Jeanfrancois VenereArgentina2026-04-23Chemel, James L Cpa QUALIFIED30Ioni Bowcher
1016Jeanfrancois VenereArgentina2026-04-12Commercial Press NEGOTIATION3Amy Elsner
1017Sinclair WaycottAustralia2026-04-26Rangoni Of Florence PROPOSAL75Stephen Shaw
1018Costa DilliardJapan2026-04-17Printing Dimensions UNQUALIFIED3Anna Fali
1019Jennifer AmigonCanada2026-04-19Benton, John B Jr RENEWAL47Elwin Sharvill
1020Aditya KuskoSpain2026-04-24Rangoni Of Florence RENEWAL95Onyama Limba
1021Aika InouyeBrazil2026-04-17Buckley Miller Wright QUALIFIED6Elwin Sharvill
1022Maria MarrierArgentina2026-04-02Chapman, Ross E Esq QUALIFIED85Asiya Javayant
1023Johnson SergiRussia2026-04-11Feltz Printing Service NEW12Asiya Javayant
1024Rodrigues CampainBrazil2026-04-11Buckley Miller Wright QUALIFIED15Asiya Javayant
1025Emily WhobreyAustralia2026-04-29Truhlar And Truhlar Attys PROPOSAL71Asiya Javayant
1026Maria MarrierIndia2026-04-16Truhlar And Truhlar Attys NEGOTIATION15Asiya Javayant
1027Silvio SlusarskiGermany2026-04-10Feiner Bros NEW86Elwin Sharvill
1028Salvatore StockhamJapan2026-04-11Morlong Associates NEGOTIATION42Anna Fali
1029Deepesh ChuiGermany2026-04-26Rousseaux, Michael Esq NEW81Onyama Limba
1030Adams MorascaArgentina2026-04-20Benton, John B Jr NEW59Asiya Javayant
1031Leja CaldareraSpain2026-04-17Commercial Press NEW46Onyama Limba
1032David DarakjyIndia2026-04-22Feltz Printing Service NEGOTIATION40Xuxue Feng
1033Juan WieserSpain2026-04-03Chemel, James L Cpa NEW66Anna Fali
1034Izzy GarufiFrance2026-04-30Rangoni Of Florence PROPOSAL75Onyama Limba
1035Izzy GarufiUnited Kingdom2026-04-08Morlong Associates PROPOSAL40Elwin Sharvill
1036Isabel BowleyBrazil2026-04-06Commercial Press UNQUALIFIED47Onyama Limba
1037Octavia MaletGermany2026-04-22Chanay, Jeffrey A Esq UNQUALIFIED92Xuxue Feng
1038Francesco ShinkoAustralia2026-04-25Chapman, Ross E Esq RENEWAL37Xuxue Feng
1039Aika InouyeSpain2026-04-29Benton, John B Jr UNQUALIFIED12Amy Elsner
1040Alejandro PerinFrance2026-04-13Morlong Associates UNQUALIFIED7Onyama Limba
1041Jones VocelkaSpain2026-05-01Feltz Printing Service QUALIFIED87Asiya Javayant
1042Darci PoquetteBrazil2026-04-13Dorl, James J Esq UNQUALIFIED59Bernardo Dominic
1043Ivar PaprockiGermany2026-04-21Printing Dimensions RENEWAL41Elwin Sharvill
1044Aruna FigeroaCanada2026-04-02Chanay, Jeffrey A Esq PROPOSAL51Elwin Sharvill
1045Mujtaba NickaUnited Kingdom2026-04-07Chapman, Ross E Esq NEGOTIATION55Anna Fali
1046Julie StensethItaly2026-04-26Commercial Press RENEWAL4Anna Fali
1047Arvin AlbaresCanada2026-04-11Printing Dimensions NEGOTIATION99Asiya Javayant
1048Jones VocelkaBrazil2026-04-29Chemel, James L Cpa UNQUALIFIED94Ivan Magalhaes
1049Ivar PaprockiCanada2026-04-05Feltz Printing Service NEW76Anna Fali
Frozen Rows
NameCountryRepresentativeStatus
Darci PoquetteAustraliaOnyama Limba RENEWAL
Antonio CaudyUnited KingdomAsiya Javayant RENEWAL
Juan WieserBrazilXuxue Feng RENEWAL
Wickens NestleBrazilAnna Fali NEGOTIATION
Smith GlickUnited KingdomAsiya Javayant PROPOSAL
Clifford RimIndiaElwin Sharvill QUALIFIED
Antonio CaudyGermanyStephen Shaw UNQUALIFIED
Munro FerenczBrazilIvan Magalhaes NEGOTIATION
Aditya KuskoCanadaAnna Fali UNQUALIFIED
Darci PoquetteCanadaElwin Sharvill RENEWAL
Greenwood BologniaItalyOnyama Limba NEW
Tony FollerBrazilAsiya Javayant PROPOSAL
Julie StensethFranceXuxue Feng RENEWAL
David DarakjyBrazilXuxue Feng UNQUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba RENEWAL
Claire TollnerBrazilIoni Bowcher NEW
Adams MorascaCanadaAsiya Javayant RENEWAL
Kadeem FlosiBrazilOnyama Limba NEW
Ricardo GauchoRussiaAmy Elsner NEGOTIATION
Ashley DoeItalyIvan Magalhaes PROPOSAL
Aika InouyeGermanyOnyama Limba UNQUALIFIED
Misaki RoysterBrazilAnna Fali UNQUALIFIED
Sinclair WaycottFranceXuxue Feng NEGOTIATION
Deepesh ChuiGermanyOnyama Limba RENEWAL
Wickens NestleAustraliaAmy Elsner NEW
Smith GlickArgentinaElwin Sharvill PROPOSAL
Jennifer AmigonIndiaStephen Shaw PROPOSAL
Leon OldroydCanadaOnyama Limba UNQUALIFIED
Aditya KuskoRussiaIoni Bowcher QUALIFIED
Mujtaba NickaFranceXuxue Feng PROPOSAL
Aditya KuskoJapanOnyama Limba NEGOTIATION
Chavez BriddickAustraliaAmy Elsner RENEWAL
Alejandro PerinSpainIoni Bowcher QUALIFIED
Cody SaylorsSpainAnna Fali PROPOSAL
Chavez BriddickArgentinaStephen Shaw NEW
Octavia MaletGermanyIvan Magalhaes RENEWAL
Alejandro PerinIndiaIvan Magalhaes RENEWAL
Johnson SergiCanadaBernardo Dominic UNQUALIFIED
Jones VocelkaRussiaElwin Sharvill NEW
Smith GlickIndiaOnyama Limba RENEWAL
Jones VocelkaJapanAsiya Javayant PROPOSAL
Izzy GarufiRussiaAsiya Javayant QUALIFIED
Morrow RutaIndiaXuxue Feng PROPOSAL
Ricardo GauchoItalyElwin Sharvill NEGOTIATION
Leon OldroydBrazilOnyama Limba NEW
Ashley DoeItalyElwin Sharvill RENEWAL
Cody SaylorsIndiaStephen Shaw PROPOSAL
Mujtaba NickaCanadaBernardo Dominic RENEWAL
Murillo MaletItalyAsiya Javayant PROPOSAL
Smith GlickJapanIoni Bowcher QUALIFIED
Frozen Columns
Name
Misaki Royster
Arvin Albares
Jefferson Schemmer
Johnson Sergi
Mayumi Kolmetz
Aika Inouye
Emily Whobrey
James Butt
Greenwood Bolognia
Rodrigues Campain
Silvio Slusarski
Jones Vocelka
Aika Inouye
James Butt
Claire Tollner
Claire Tollner
Wickens Nestle
Darci Poquette
Smith Glick
Faith Gillian
Tony Foller
James Butt
Rodrigues Campain
Morrow Ruta
Chavez Briddick
Mayumi Kolmetz
Stacey Maclead
Morrow Ruta
Cody Saylors
Stacey Maclead
Jones Vocelka
Jefferson Schemmer
Ricardo Gaucho
Munro Ferencz
Jennifer Amigon
Rodrigues Campain
Rodrigues Campain
Ricardo Gaucho
Stacey Maclead
Mujtaba Nicka
Juan Wieser
Smith Glick
Salvatore Stockham
Clifford Rim
Nicolas Iturbide
Claire Tollner
Johnson Sergi
Aditya Kusko
Aditya Kusko
Silvio Slusarski
IdCountryDate
1000Brazil2026-04-27
1001Canada2026-04-12
1002Japan2026-04-28
1003Japan2026-04-18
1004France2026-05-01
1005Japan2026-04-20
1006Australia2026-04-30
1007Canada2026-04-11
1008Italy2026-04-30
1009United Kingdom2026-04-22
1010Australia2026-04-07
1011Spain2026-04-16
1012United Kingdom2026-04-15
1013Australia2026-04-28
1014United Kingdom2026-04-15
1015United Kingdom2026-04-27
1016France2026-04-05
1017Australia2026-04-12
1018Russia2026-04-12
1019Russia2026-04-06
1020Japan2026-04-24
1021Japan2026-05-01
1022Germany2026-04-06
1023India2026-04-21
1024Australia2026-04-07
1025United Kingdom2026-04-27
1026Canada2026-04-07
1027Italy2026-04-08
1028France2026-04-04
1029Germany2026-04-02
1030Brazil2026-05-01
1031Australia2026-05-01
1032Canada2026-04-13
1033Germany2026-04-03
1034Germany2026-04-15
1035Germany2026-04-12
1036Brazil2026-04-10
1037Australia2026-04-13
1038Argentina2026-04-18
1039Argentina2026-04-29
1040Germany2026-04-11
1041India2026-04-18
1042Brazil2026-04-20
1043France2026-04-18
1044Canada2026-04-16
1045Spain2026-04-17
1046Canada2026-04-21
1047Russia2026-04-13
1048Germany2026-04-10
1049India2026-04-23

On-Demand Data

NameIdCountryDate
Tony Foller1000Germany2026-04-02
Tony Foller1001Germany2026-04-28
Antonio Caudy1002Australia2026-04-27
Maisha Rulapaugh1003Italy2026-04-11
Sinclair Waycott1004Australia2026-04-06
Mayumi Kolmetz1005Germany2026-04-03
Claire Tollner1006Australia2026-04-16
Leja Caldarera1007Argentina2026-04-16
Rodrigues Campain1008Japan2026-04-10
Izzy Garufi1009Australia2026-04-28
Francesco Shinko1010Germany2026-04-02
Morrow Ruta1011Australia2026-04-17
Maria Marrier1012Canada2026-04-08
Jennifer Amigon1013Italy2026-04-27
Francesco Shinko1014India2026-04-06
Clifford Rim1015India2026-04-05
Ashley Doe1016Brazil2026-04-12
Izzy Garufi1017Japan2026-04-02
Ivar Paprocki1018France2026-04-13
Stacey Maclead1019Russia2026-04-08
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Antonio CaudyAustraliaAnna Fali NEW
Maisha RulapaughArgentinaStephen Shaw RENEWAL
Leon OldroydIndiaAnna Fali QUALIFIED
Aruna FigeroaSpainIoni Bowcher RENEWAL
Jeanfrancois VenereIndiaAmy Elsner PROPOSAL
Munro FerenczBrazilAmy Elsner NEGOTIATION
Ricardo GauchoSpainIvan Magalhaes UNQUALIFIED
Aditya KuskoAustraliaAmy Elsner RENEWAL
Stacey MacleadUnited KingdomAsiya Javayant RENEWAL
Leon OldroydBrazilBernardo Dominic NEGOTIATION
Ashley DoeArgentinaAnna Fali NEGOTIATION
Claire TollnerIndiaBernardo Dominic RENEWAL
Stacey MacleadSpainBernardo Dominic QUALIFIED
Johnson SergiItalyStephen Shaw PROPOSAL
Maisha RulapaughSpainAnna Fali NEGOTIATION
Cody SaylorsGermanyElwin Sharvill NEGOTIATION
Octavia MaletAustraliaXuxue Feng NEW
Julie StensethGermanyElwin Sharvill NEGOTIATION
Antonio CaudyUnited KingdomBernardo Dominic NEW
James ButtBrazilAnna Fali UNQUALIFIED
Salvatore StockhamCanadaBernardo Dominic PROPOSAL
Aruna FigeroaSpainAmy Elsner UNQUALIFIED
Jefferson SchemmerJapanAmy Elsner RENEWAL
Jeanfrancois VenereRussiaElwin Sharvill RENEWAL
Morrow RutaCanadaOnyama Limba UNQUALIFIED
Misaki RoysterCanadaOnyama Limba QUALIFIED
Ricardo GauchoRussiaElwin Sharvill UNQUALIFIED
Kaitlin OstroskyArgentinaBernardo Dominic NEW
Emily WhobreyGermanyOnyama Limba UNQUALIFIED
Kadeem FlosiRussiaIvan Magalhaes PROPOSAL
Chavez BriddickCanadaIoni Bowcher UNQUALIFIED
Aditya KuskoItalyIoni Bowcher RENEWAL
Maisha RulapaughSpainAsiya Javayant PROPOSAL
David DarakjyJapanOnyama Limba NEW
Mujtaba NickaBrazilXuxue Feng QUALIFIED
Wickens NestleAustraliaAmy Elsner NEW
James ButtRussiaAmy Elsner UNQUALIFIED
Juan WieserArgentinaOnyama Limba RENEWAL
Jeanfrancois VenereIndiaIvan Magalhaes PROPOSAL
Murillo MaletFranceBernardo Dominic UNQUALIFIED

<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>