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
Silvio SlusarskiRussiaStephen Shaw UNQUALIFIED
Isabel BowleyCanadaXuxue Feng NEW
Chavez BriddickIndiaAsiya Javayant NEGOTIATION
Silvio SlusarskiItalyOnyama Limba NEW
Faith GillianSpainAnna Fali RENEWAL
Kaitlin OstroskyFranceAsiya Javayant NEGOTIATION
Faith GillianRussiaIvan Magalhaes NEGOTIATION
Wickens NestleRussiaAsiya Javayant NEW
Johnson SergiGermanyAmy Elsner NEGOTIATION
Emily WhobreyFranceStephen Shaw NEGOTIATION
Kaitlin OstroskyAustraliaIvan Magalhaes NEW
Aruna FigeroaAustraliaAsiya Javayant QUALIFIED
Emily WhobreyArgentinaIoni Bowcher UNQUALIFIED
Cody SaylorsUnited KingdomIoni Bowcher NEGOTIATION
Leon OldroydIndiaAsiya Javayant NEW
Johnson SergiJapanStephen Shaw PROPOSAL
Misaki RoysterAustraliaStephen Shaw NEW
Maria MarrierRussiaAnna Fali UNQUALIFIED
Rodrigues CampainUnited KingdomAsiya Javayant QUALIFIED
Jones VocelkaIndiaElwin Sharvill NEW
Rodrigues CampainAustraliaBernardo Dominic QUALIFIED
Munro FerenczJapanIoni Bowcher NEW
Wickens NestleSpainIvan Magalhaes NEGOTIATION
Izzy GarufiArgentinaAmy Elsner NEGOTIATION
Mayumi KolmetzCanadaOnyama Limba UNQUALIFIED
Antonio CaudyArgentinaElwin Sharvill QUALIFIED
Misaki RoysterAustraliaBernardo Dominic NEW
James ButtIndiaIvan Magalhaes NEGOTIATION
Claire TollnerJapanElwin Sharvill NEW
Morrow RutaRussiaAsiya Javayant NEW
Murillo MaletJapanAmy Elsner QUALIFIED
Jennifer AmigonIndiaElwin Sharvill NEW
Aditya KuskoAustraliaBernardo Dominic NEW
Misaki RoysterFranceIoni Bowcher UNQUALIFIED
Deepesh ChuiAustraliaAmy Elsner UNQUALIFIED
Johnson SergiBrazilXuxue Feng NEGOTIATION
Smith GlickRussiaAnna Fali PROPOSAL
Arvin AlbaresCanadaXuxue Feng RENEWAL
Johnson SergiUnited KingdomAsiya Javayant RENEWAL
Julie StensethAustraliaBernardo Dominic NEGOTIATION
Costa DilliardCanadaIoni Bowcher NEGOTIATION
Aditya KuskoItalyBernardo Dominic NEGOTIATION
Cody SaylorsGermanyIvan Magalhaes PROPOSAL
Ricardo GauchoItalyStephen Shaw NEW
Misaki RoysterAustraliaOnyama Limba PROPOSAL
Octavia MaletBrazilElwin Sharvill RENEWAL
Isabel BowleyJapanXuxue Feng NEW
Arvin AlbaresItalyIoni Bowcher QUALIFIED
Darci PoquetteGermanyAsiya Javayant RENEWAL
Leja CaldareraJapanStephen Shaw RENEWAL
Horizontal
NameCountryRepresentativeStatus
Costa DilliardCanadaAsiya Javayant QUALIFIED
Claire TollnerUnited KingdomStephen Shaw PROPOSAL
Francesco ShinkoUnited KingdomBernardo Dominic NEGOTIATION
Arvin AlbaresSpainAsiya Javayant PROPOSAL
Rodrigues CampainIndiaStephen Shaw QUALIFIED
Wickens NestleRussiaElwin Sharvill NEW
Jefferson SchemmerSpainAsiya Javayant UNQUALIFIED
Cody SaylorsRussiaIvan Magalhaes QUALIFIED
Julie StensethJapanOnyama Limba NEGOTIATION
Deepesh ChuiAustraliaBernardo Dominic NEGOTIATION
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Emily WhobreyIndia2025-09-18Commercial Press NEW15Ivan Magalhaes
1001Chavez BriddickItaly2025-09-24Commercial Press QUALIFIED63Stephen Shaw
1002Misaki RoysterGermany2025-09-25Feiner Bros QUALIFIED79Onyama Limba
1003Emily WhobreyCanada2025-09-26Truhlar And Truhlar Attys PROPOSAL83Anna Fali
1004Salvatore StockhamFrance2025-09-15Feltz Printing Service NEW31Stephen Shaw
1005Mujtaba NickaGermany2025-09-29Feiner Bros NEW49Xuxue Feng
1006Isabel BowleySpain2025-09-13Truhlar And Truhlar Attys UNQUALIFIED80Anna Fali
1007Wickens NestleAustralia2025-09-11Commercial Press PROPOSAL52Amy Elsner
1008Francesco ShinkoFrance2025-09-19Truhlar And Truhlar Attys NEW32Anna Fali
1009Juan WieserArgentina2025-10-10Feiner Bros NEGOTIATION23Ivan Magalhaes
1010Wickens NestleFrance2025-09-22Chanay, Jeffrey A Esq PROPOSAL20Stephen Shaw
1011Sinclair WaycottRussia2025-10-01Chapman, Ross E Esq UNQUALIFIED25Xuxue Feng
1012Francesco ShinkoJapan2025-09-26Chanay, Jeffrey A Esq PROPOSAL98Anna Fali
1013Misaki RoysterJapan2025-09-21Chanay, Jeffrey A Esq UNQUALIFIED78Ivan Magalhaes
1014Ivar PaprockiSpain2025-09-13Rousseaux, Michael Esq RENEWAL69Onyama Limba
1015Jeanfrancois VenereBrazil2025-09-25Chemel, James L Cpa PROPOSAL84Stephen Shaw
1016Maisha RulapaughBrazil2025-09-24Rangoni Of Florence NEGOTIATION26Stephen Shaw
1017Octavia MaletFrance2025-10-04Rousseaux, Michael Esq PROPOSAL66Xuxue Feng
1018Emily WhobreyJapan2025-10-09Chapman, Ross E Esq PROPOSAL37Ivan Magalhaes
1019Morrow RutaJapan2025-09-11Truhlar And Truhlar Attys NEGOTIATION3Onyama Limba
1020Wickens NestleBrazil2025-09-18Chanay, Jeffrey A Esq NEW28Amy Elsner
1021Nicolas IturbideBrazil2025-10-01Printing Dimensions QUALIFIED29Ivan Magalhaes
1022Costa DilliardJapan2025-09-25Commercial Press PROPOSAL17Ioni Bowcher
1023Salvatore StockhamGermany2025-09-23Rousseaux, Michael Esq NEGOTIATION43Amy Elsner
1024Nicolas IturbideAustralia2025-09-28Chanay, Jeffrey A Esq UNQUALIFIED80Ioni Bowcher
1025Smith GlickBrazil2025-09-30Benton, John B Jr NEGOTIATION24Ioni Bowcher
1026Jefferson SchemmerAustralia2025-09-30Chapman, Ross E Esq UNQUALIFIED42Anna Fali
1027Kaitlin OstroskyCanada2025-09-30King, Christopher A Esq RENEWAL13Elwin Sharvill
1028Sinclair WaycottCanada2025-09-13Feltz Printing Service QUALIFIED8Stephen Shaw
1029Cody SaylorsItaly2025-09-15King, Christopher A Esq PROPOSAL38Bernardo Dominic
1030Sinclair WaycottBrazil2025-10-08Commercial Press NEGOTIATION2Stephen Shaw
1031David DarakjyRussia2025-10-03King, Christopher A Esq NEGOTIATION4Anna Fali
1032Stacey MacleadIndia2025-09-30Rousseaux, Michael Esq UNQUALIFIED59Asiya Javayant
1033Aruna FigeroaJapan2025-09-19Dorl, James J Esq QUALIFIED5Stephen Shaw
1034Aika InouyeCanada2025-10-06Printing Dimensions NEGOTIATION67Stephen Shaw
1035Greenwood BologniaRussia2025-09-11Morlong Associates QUALIFIED82Anna Fali
1036Nicolas IturbideGermany2025-09-27Rangoni Of Florence PROPOSAL46Asiya Javayant
1037Ashley DoeRussia2025-09-16Truhlar And Truhlar Attys RENEWAL17Anna Fali
1038Jennifer AmigonItaly2025-09-16Printing Dimensions NEGOTIATION94Stephen Shaw
1039Rodrigues CampainFrance2025-10-08Benton, John B Jr NEW90Asiya Javayant
1040Emily WhobreyArgentina2025-09-28Dorl, James J Esq NEW0Ivan Magalhaes
1041Ivar PaprockiSpain2025-09-29King, Christopher A Esq QUALIFIED40Onyama Limba
1042Ricardo GauchoCanada2025-09-18Morlong Associates NEW25Ioni Bowcher
1043Wickens NestleFrance2025-09-19Benton, John B Jr QUALIFIED52Xuxue Feng
1044Aruna FigeroaBrazil2025-09-29Commercial Press NEW52Ivan Magalhaes
1045Cody SaylorsArgentina2025-09-23Rousseaux, Michael Esq UNQUALIFIED23Elwin Sharvill
1046Morrow RutaArgentina2025-09-19King, Christopher A Esq UNQUALIFIED82Onyama Limba
1047Ricardo GauchoArgentina2025-09-23Chanay, Jeffrey A Esq UNQUALIFIED66Elwin Sharvill
1048Aruna FigeroaIndia2025-09-16Chanay, Jeffrey A Esq NEGOTIATION52Xuxue Feng
1049Wickens NestleSpain2025-09-17Morlong Associates NEGOTIATION15Stephen Shaw
Frozen Rows
NameCountryRepresentativeStatus
Greenwood BologniaAustraliaIvan Magalhaes PROPOSAL
Silvio SlusarskiIndiaIoni Bowcher RENEWAL
David DarakjyJapanOnyama Limba NEGOTIATION
Juan WieserRussiaAnna Fali NEW
James ButtBrazilXuxue Feng NEW
Aruna FigeroaRussiaAsiya Javayant UNQUALIFIED
Ricardo GauchoArgentinaAnna Fali RENEWAL
Aditya KuskoIndiaAmy Elsner QUALIFIED
David DarakjyAustraliaAsiya Javayant NEW
Wickens NestleGermanyAnna Fali NEGOTIATION
Mujtaba NickaGermanyIvan Magalhaes NEW
Mujtaba NickaSpainIvan Magalhaes QUALIFIED
Ivar PaprockiCanadaAnna Fali UNQUALIFIED
Cody SaylorsCanadaOnyama Limba NEW
Sinclair WaycottArgentinaElwin Sharvill PROPOSAL
David DarakjyAustraliaIoni Bowcher PROPOSAL
Arvin AlbaresGermanyAsiya Javayant NEGOTIATION
Jeanfrancois VenereGermanyElwin Sharvill NEGOTIATION
Morrow RutaArgentinaElwin Sharvill QUALIFIED
Francesco ShinkoAustraliaElwin Sharvill PROPOSAL
Rodrigues CampainAustraliaAsiya Javayant NEGOTIATION
Jeanfrancois VenereUnited KingdomIoni Bowcher UNQUALIFIED
Ricardo GauchoRussiaIoni Bowcher NEW
Sinclair WaycottGermanyIvan Magalhaes NEW
Ashley DoeSpainAnna Fali QUALIFIED
Salvatore StockhamSpainAsiya Javayant UNQUALIFIED
Leja CaldareraSpainElwin Sharvill QUALIFIED
Clifford RimRussiaXuxue Feng PROPOSAL
Leja CaldareraFranceOnyama Limba NEGOTIATION
Jones VocelkaCanadaIvan Magalhaes UNQUALIFIED
Stacey MacleadItalyStephen Shaw PROPOSAL
Mayumi KolmetzBrazilElwin Sharvill QUALIFIED
Salvatore StockhamCanadaBernardo Dominic NEW
Maria MarrierCanadaIoni Bowcher NEGOTIATION
Salvatore StockhamJapanXuxue Feng RENEWAL
Rodrigues CampainAustraliaIoni Bowcher QUALIFIED
Izzy GarufiGermanyElwin Sharvill PROPOSAL
Arvin AlbaresIndiaAnna Fali NEW
Kaitlin OstroskyIndiaStephen Shaw RENEWAL
Juan WieserAustraliaIvan Magalhaes QUALIFIED
Silvio SlusarskiUnited KingdomAmy Elsner RENEWAL
Wickens NestleFranceIoni Bowcher NEGOTIATION
Misaki RoysterArgentinaStephen Shaw PROPOSAL
Ivar PaprockiCanadaXuxue Feng PROPOSAL
Tony FollerAustraliaAmy Elsner PROPOSAL
Wickens NestleCanadaXuxue Feng RENEWAL
Arvin AlbaresItalyBernardo Dominic NEGOTIATION
Greenwood BologniaCanadaOnyama Limba QUALIFIED
Mujtaba NickaSpainAnna Fali QUALIFIED
Claire TollnerGermanyXuxue Feng NEGOTIATION
Frozen Columns
Name
Faith Gillian
Jones Vocelka
Kadeem Flosi
Alejandro Perin
Sinclair Waycott
Misaki Royster
Smith Glick
Jones Vocelka
Alejandro Perin
Morrow Ruta
Octavia Malet
Wickens Nestle
Emily Whobrey
Jefferson Schemmer
Adams Morasca
Clifford Rim
Arvin Albares
Kadeem Flosi
Leon Oldroyd
Jones Vocelka
Wickens Nestle
Stacey Maclead
Jefferson Schemmer
Adams Morasca
Octavia Malet
Aika Inouye
Smith Glick
Aika Inouye
Kadeem Flosi
Francesco Shinko
Arvin Albares
Juan Wieser
Darci Poquette
Mujtaba Nicka
Silvio Slusarski
Murillo Malet
Maria Marrier
Misaki Royster
James Butt
Antonio Caudy
Tony Foller
Jones Vocelka
Nicolas Iturbide
Morrow Ruta
Tony Foller
Jefferson Schemmer
Costa Dilliard
Misaki Royster
Ivar Paprocki
Faith Gillian
IdCountryDate
1000Japan2025-10-02
1001Russia2025-09-19
1002France2025-10-09
1003Australia2025-09-26
1004Italy2025-09-15
1005Canada2025-09-29
1006India2025-10-05
1007France2025-09-30
1008Russia2025-09-27
1009France2025-10-07
1010Brazil2025-10-08
1011Australia2025-10-08
1012Canada2025-09-17
1013Spain2025-09-13
1014Australia2025-09-30
1015Spain2025-09-16
1016Germany2025-10-07
1017Australia2025-09-20
1018France2025-10-07
1019United Kingdom2025-10-08
1020Italy2025-10-10
1021Italy2025-10-05
1022India2025-09-13
1023Canada2025-10-03
1024Spain2025-09-13
1025India2025-09-13
1026Spain2025-09-19
1027India2025-10-03
1028Spain2025-09-28
1029Australia2025-09-22
1030Italy2025-09-15
1031Brazil2025-10-08
1032Italy2025-09-19
1033Argentina2025-09-26
1034Japan2025-10-08
1035Germany2025-10-01
1036Italy2025-10-05
1037Australia2025-10-05
1038Argentina2025-09-26
1039Germany2025-09-13
1040Italy2025-09-14
1041Canada2025-09-14
1042Japan2025-09-22
1043Spain2025-10-03
1044Germany2025-09-14
1045Japan2025-10-05
1046Canada2025-09-21
1047France2025-10-04
1048Germany2025-09-22
1049United Kingdom2025-09-16

On-Demand Data

NameIdCountryDate
Clifford Rim1000France2025-10-05
Murillo Malet1001Germany2025-09-20
Costa Dilliard1002United Kingdom2025-09-20
Rodrigues Campain1003Russia2025-09-12
Rodrigues Campain1004Germany2025-10-07
Costa Dilliard1005Australia2025-10-09
James Butt1006Spain2025-09-28
Leon Oldroyd1007Spain2025-09-12
James Butt1008Russia2025-09-16
Alejandro Perin1009Italy2025-10-09
Jones Vocelka1010United Kingdom2025-09-24
Munro Ferencz1011Australia2025-09-21
Johnson Sergi1012Germany2025-09-21
Munro Ferencz1013Germany2025-09-18
Emily Whobrey1014Germany2025-10-01
Morrow Ruta1015Brazil2025-09-20
Ivar Paprocki1016Brazil2025-10-04
Jeanfrancois Venere1017Canada2025-10-01
Mayumi Kolmetz1018Germany2025-10-08
Misaki Royster1019Germany2025-09-30
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Leja CaldareraUnited KingdomElwin Sharvill RENEWAL
Arvin AlbaresGermanyStephen Shaw RENEWAL
Smith GlickCanadaAmy Elsner NEW
Aditya KuskoIndiaIvan Magalhaes UNQUALIFIED
Adams MorascaJapanIvan Magalhaes NEW
Greenwood BologniaGermanyAnna Fali NEGOTIATION
Mayumi KolmetzRussiaOnyama Limba NEW
Murillo MaletFranceAnna Fali NEW
Juan WieserIndiaOnyama Limba UNQUALIFIED
Izzy GarufiBrazilBernardo Dominic QUALIFIED
Leja CaldareraCanadaElwin Sharvill PROPOSAL
Antonio CaudyCanadaAsiya Javayant NEW
Chavez BriddickGermanyIvan Magalhaes UNQUALIFIED
Aruna FigeroaBrazilIvan Magalhaes QUALIFIED
Sinclair WaycottGermanyAnna Fali PROPOSAL
Arvin AlbaresSpainIvan Magalhaes PROPOSAL
Stacey MacleadArgentinaAnna Fali QUALIFIED
Arvin AlbaresSpainAsiya Javayant QUALIFIED
Jefferson SchemmerSpainElwin Sharvill NEGOTIATION
Johnson SergiFranceAsiya Javayant NEGOTIATION
Morrow RutaJapanElwin Sharvill RENEWAL
Kadeem FlosiIndiaBernardo Dominic RENEWAL
Arvin AlbaresIndiaIoni Bowcher QUALIFIED
Sinclair WaycottBrazilBernardo Dominic QUALIFIED
Mujtaba NickaArgentinaOnyama Limba RENEWAL
Silvio SlusarskiItalyXuxue Feng PROPOSAL
Izzy GarufiGermanyAmy Elsner NEW
Ivar PaprockiAustraliaBernardo Dominic RENEWAL
Murillo MaletJapanAnna Fali UNQUALIFIED
Morrow RutaIndiaAsiya Javayant PROPOSAL
Morrow RutaSpainElwin Sharvill PROPOSAL
Tony FollerArgentinaAnna Fali RENEWAL
Izzy GarufiArgentinaElwin Sharvill UNQUALIFIED
Nicolas IturbideBrazilElwin Sharvill NEGOTIATION
Izzy GarufiAustraliaAnna Fali RENEWAL
Costa DilliardFranceIoni Bowcher PROPOSAL
David DarakjyFranceElwin Sharvill NEGOTIATION
Sinclair WaycottArgentinaIoni Bowcher QUALIFIED
Silvio SlusarskiItalyElwin Sharvill NEW
Stacey MacleadIndiaIoni Bowcher RENEWAL

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