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
Claire TollnerAustraliaStephen Shaw PROPOSAL
Smith GlickItalyAmy Elsner NEGOTIATION
Maria MarrierSpainAmy Elsner NEGOTIATION
Adams MorascaJapanOnyama Limba PROPOSAL
Kaitlin OstroskyIndiaOnyama Limba PROPOSAL
Francesco ShinkoJapanOnyama Limba RENEWAL
Chavez BriddickJapanElwin Sharvill QUALIFIED
Izzy GarufiFranceAnna Fali NEW
Misaki RoysterCanadaIvan Magalhaes PROPOSAL
Wickens NestleIndiaAmy Elsner QUALIFIED
Leon OldroydSpainAnna Fali RENEWAL
Ivar PaprockiCanadaIoni Bowcher NEGOTIATION
Johnson SergiArgentinaStephen Shaw UNQUALIFIED
Salvatore StockhamIndiaBernardo Dominic NEW
Alejandro PerinUnited KingdomAsiya Javayant QUALIFIED
Jefferson SchemmerJapanOnyama Limba NEGOTIATION
Silvio SlusarskiUnited KingdomAnna Fali PROPOSAL
Maria MarrierItalyElwin Sharvill RENEWAL
Antonio CaudyArgentinaAmy Elsner UNQUALIFIED
Ashley DoeCanadaAnna Fali RENEWAL
Leja CaldareraIndiaElwin Sharvill PROPOSAL
Murillo MaletFranceElwin Sharvill UNQUALIFIED
James ButtAustraliaIoni Bowcher NEGOTIATION
Ivar PaprockiFranceAmy Elsner PROPOSAL
Rodrigues CampainRussiaAnna Fali QUALIFIED
Ashley DoeItalyOnyama Limba PROPOSAL
Costa DilliardUnited KingdomStephen Shaw NEW
Ashley DoeRussiaIvan Magalhaes QUALIFIED
Stacey MacleadAustraliaAsiya Javayant QUALIFIED
Emily WhobreyAustraliaAsiya Javayant UNQUALIFIED
Chavez BriddickJapanIvan Magalhaes NEW
Faith GillianItalyAmy Elsner PROPOSAL
Greenwood BologniaCanadaAsiya Javayant NEW
Tony FollerUnited KingdomAmy Elsner NEW
Ricardo GauchoFranceOnyama Limba RENEWAL
Faith GillianArgentinaElwin Sharvill PROPOSAL
Isabel BowleyJapanAnna Fali UNQUALIFIED
Arvin AlbaresRussiaBernardo Dominic QUALIFIED
Aruna FigeroaGermanyElwin Sharvill RENEWAL
Aruna FigeroaGermanyIvan Magalhaes QUALIFIED
Misaki RoysterItalyXuxue Feng PROPOSAL
Darci PoquetteCanadaAmy Elsner PROPOSAL
Leon OldroydUnited KingdomBernardo Dominic NEGOTIATION
Deepesh ChuiCanadaXuxue Feng PROPOSAL
Murillo MaletSpainAmy Elsner PROPOSAL
Juan WieserGermanyOnyama Limba PROPOSAL
Maisha RulapaughArgentinaIoni Bowcher QUALIFIED
Antonio CaudyIndiaBernardo Dominic PROPOSAL
Sinclair WaycottJapanAnna Fali NEGOTIATION
Francesco ShinkoJapanIvan Magalhaes QUALIFIED
Horizontal
NameCountryRepresentativeStatus
Octavia MaletIndiaBernardo Dominic NEGOTIATION
Jones VocelkaCanadaElwin Sharvill PROPOSAL
Ashley DoeCanadaXuxue Feng RENEWAL
Johnson SergiBrazilXuxue Feng UNQUALIFIED
Cody SaylorsJapanStephen Shaw RENEWAL
Faith GillianUnited KingdomXuxue Feng PROPOSAL
Johnson SergiRussiaAnna Fali RENEWAL
Ivar PaprockiBrazilIvan Magalhaes NEW
Cody SaylorsAustraliaElwin Sharvill RENEWAL
Darci PoquetteCanadaStephen Shaw RENEWAL
Horizontal and Vertical
IdNameCountryDateCompanyStatusActivityRepresentative
1000Clifford RimItaly2026-05-30King, Christopher A Esq QUALIFIED43Bernardo Dominic
1001Ashley DoeUnited Kingdom2026-06-05Truhlar And Truhlar Attys RENEWAL76Amy Elsner
1002Alejandro PerinGermany2026-05-19Truhlar And Truhlar Attys PROPOSAL86Asiya Javayant
1003Sinclair WaycottIndia2026-06-08Morlong Associates PROPOSAL23Asiya Javayant
1004Maisha RulapaughIndia2026-05-20Printing Dimensions PROPOSAL98Asiya Javayant
1005Mujtaba NickaJapan2026-06-01Truhlar And Truhlar Attys UNQUALIFIED81Ioni Bowcher
1006Murillo MaletItaly2026-06-07Printing Dimensions QUALIFIED9Ivan Magalhaes
1007Maria MarrierItaly2026-06-01Benton, John B Jr NEW56Ivan Magalhaes
1008Salvatore StockhamFrance2026-05-25Rousseaux, Michael Esq UNQUALIFIED87Ioni Bowcher
1009Leja CaldareraFrance2026-05-30Chapman, Ross E Esq QUALIFIED23Stephen Shaw
1010Izzy GarufiArgentina2026-05-16Buckley Miller Wright QUALIFIED97Anna Fali
1011Juan WieserIndia2026-06-13Truhlar And Truhlar Attys QUALIFIED95Amy Elsner
1012Deepesh ChuiFrance2026-05-15Feltz Printing Service RENEWAL20Ioni Bowcher
1013Salvatore StockhamGermany2026-05-30Printing Dimensions RENEWAL95Bernardo Dominic
1014Chavez BriddickSpain2026-05-29Dorl, James J Esq UNQUALIFIED53Stephen Shaw
1015Morrow RutaSpain2026-06-10Chemel, James L Cpa NEW45Stephen Shaw
1016Leja CaldareraCanada2026-05-17Rangoni Of Florence PROPOSAL74Asiya Javayant
1017Nicolas IturbideJapan2026-05-25Rangoni Of Florence QUALIFIED50Ivan Magalhaes
1018Mujtaba NickaArgentina2026-05-28Printing Dimensions RENEWAL53Asiya Javayant
1019Maria MarrierCanada2026-06-13Feiner Bros QUALIFIED76Anna Fali
1020Silvio SlusarskiArgentina2026-05-17Rangoni Of Florence PROPOSAL11Amy Elsner
1021Isabel BowleySpain2026-05-17King, Christopher A Esq UNQUALIFIED38Xuxue Feng
1022James ButtGermany2026-05-20King, Christopher A Esq RENEWAL62Ivan Magalhaes
1023Morrow RutaFrance2026-05-15Chapman, Ross E Esq NEW74Anna Fali
1024Kadeem FlosiUnited Kingdom2026-06-05Truhlar And Truhlar Attys UNQUALIFIED23Elwin Sharvill
1025Chavez BriddickCanada2026-06-06Truhlar And Truhlar Attys NEGOTIATION27Ivan Magalhaes
1026Salvatore StockhamGermany2026-05-30Truhlar And Truhlar Attys UNQUALIFIED49Bernardo Dominic
1027Deepesh ChuiRussia2026-05-28Feiner Bros UNQUALIFIED87Elwin Sharvill
1028Jeanfrancois VenereGermany2026-05-22Buckley Miller Wright NEGOTIATION14Anna Fali
1029Costa DilliardGermany2026-06-09Chanay, Jeffrey A Esq QUALIFIED29Amy Elsner
1030Tony FollerAustralia2026-05-23Chanay, Jeffrey A Esq QUALIFIED91Anna Fali
1031Nicolas IturbideArgentina2026-06-05King, Christopher A Esq NEGOTIATION89Ioni Bowcher
1032Stacey MacleadArgentina2026-05-15Dorl, James J Esq UNQUALIFIED62Bernardo Dominic
1033Johnson SergiIndia2026-05-21King, Christopher A Esq NEGOTIATION13Asiya Javayant
1034Murillo MaletGermany2026-06-11Dorl, James J Esq QUALIFIED6Amy Elsner
1035Cody SaylorsCanada2026-06-06Commercial Press UNQUALIFIED73Ioni Bowcher
1036Francesco ShinkoItaly2026-05-29Chapman, Ross E Esq RENEWAL28Ioni Bowcher
1037Clifford RimItaly2026-06-08Morlong Associates UNQUALIFIED12Onyama Limba
1038Aruna FigeroaFrance2026-06-04Rangoni Of Florence RENEWAL0Bernardo Dominic
1039Stacey MacleadItaly2026-06-04Dorl, James J Esq NEW46Ioni Bowcher
1040Johnson SergiGermany2026-05-27King, Christopher A Esq RENEWAL26Ioni Bowcher
1041Octavia MaletSpain2026-06-13Rousseaux, Michael Esq NEW53Elwin Sharvill
1042Leja CaldareraFrance2026-06-03Benton, John B Jr UNQUALIFIED50Anna Fali
1043Claire TollnerBrazil2026-06-02Benton, John B Jr QUALIFIED49Stephen Shaw
1044Stacey MacleadRussia2026-05-28Printing Dimensions UNQUALIFIED3Asiya Javayant
1045Faith GillianIndia2026-06-04Feltz Printing Service NEW40Asiya Javayant
1046Deepesh ChuiUnited Kingdom2026-06-10Commercial Press QUALIFIED37Asiya Javayant
1047Jones VocelkaCanada2026-05-20Chanay, Jeffrey A Esq UNQUALIFIED22Ioni Bowcher
1048Costa DilliardCanada2026-05-31Chemel, James L Cpa NEGOTIATION12Elwin Sharvill
1049Aika InouyeArgentina2026-06-01Rousseaux, Michael Esq QUALIFIED76Asiya Javayant
Frozen Rows
NameCountryRepresentativeStatus
Deepesh ChuiItalyXuxue Feng PROPOSAL
Munro FerenczRussiaElwin Sharvill RENEWAL
Emily WhobreyUnited KingdomIoni Bowcher PROPOSAL
James ButtRussiaAmy Elsner NEGOTIATION
Chavez BriddickArgentinaOnyama Limba UNQUALIFIED
Jefferson SchemmerJapanIoni Bowcher QUALIFIED
Juan WieserArgentinaStephen Shaw RENEWAL
Alejandro PerinItalyAnna Fali QUALIFIED
Kaitlin OstroskySpainIoni Bowcher QUALIFIED
Maria MarrierFranceIvan Magalhaes QUALIFIED
Alejandro PerinBrazilStephen Shaw UNQUALIFIED
Johnson SergiSpainXuxue Feng UNQUALIFIED
Smith GlickSpainBernardo Dominic UNQUALIFIED
Smith GlickArgentinaAnna Fali UNQUALIFIED
Rodrigues CampainIndiaBernardo Dominic QUALIFIED
Murillo MaletFranceStephen Shaw RENEWAL
Izzy GarufiIndiaXuxue Feng NEGOTIATION
Aditya KuskoArgentinaAmy Elsner RENEWAL
Aika InouyeItalyAnna Fali RENEWAL
Jones VocelkaGermanyIvan Magalhaes NEW
Mujtaba NickaIndiaAmy Elsner PROPOSAL
Morrow RutaRussiaIoni Bowcher UNQUALIFIED
Izzy GarufiIndiaElwin Sharvill NEW
Octavia MaletFranceAnna Fali QUALIFIED
Ricardo GauchoAustraliaStephen Shaw RENEWAL
Rodrigues CampainItalyAmy Elsner NEW
Deepesh ChuiBrazilIoni Bowcher NEW
Chavez BriddickJapanStephen Shaw PROPOSAL
James ButtBrazilAnna Fali PROPOSAL
Jeanfrancois VenereItalyBernardo Dominic NEGOTIATION
Misaki RoysterBrazilOnyama Limba RENEWAL
Aditya KuskoItalyIoni Bowcher NEW
Arvin AlbaresIndiaElwin Sharvill NEGOTIATION
David DarakjyItalyIvan Magalhaes NEGOTIATION
Murillo MaletAustraliaAnna Fali PROPOSAL
Mujtaba NickaJapanXuxue Feng PROPOSAL
Nicolas IturbideRussiaAnna Fali QUALIFIED
Leja CaldareraArgentinaIvan Magalhaes PROPOSAL
Cody SaylorsArgentinaAmy Elsner NEW
Ashley DoeFranceAsiya Javayant PROPOSAL
Jones VocelkaUnited KingdomAnna Fali PROPOSAL
Stacey MacleadJapanBernardo Dominic PROPOSAL
Johnson SergiJapanOnyama Limba NEGOTIATION
Adams MorascaRussiaBernardo Dominic NEGOTIATION
Mujtaba NickaJapanAmy Elsner UNQUALIFIED
Wickens NestleCanadaAnna Fali NEGOTIATION
Leon OldroydRussiaOnyama Limba UNQUALIFIED
Mujtaba NickaJapanXuxue Feng PROPOSAL
David DarakjyBrazilBernardo Dominic RENEWAL
Mayumi KolmetzGermanyStephen Shaw NEGOTIATION
Frozen Columns
Name
Wickens Nestle
Ricardo Gaucho
Costa Dilliard
Julie Stenseth
Adams Morasca
Ivar Paprocki
Wickens Nestle
Sinclair Waycott
Ivar Paprocki
Rodrigues Campain
Mujtaba Nicka
Kadeem Flosi
Misaki Royster
Claire Tollner
Sinclair Waycott
Leon Oldroyd
Clifford Rim
Murillo Malet
Morrow Ruta
Ashley Doe
Emily Whobrey
Sinclair Waycott
Aruna Figeroa
Alejandro Perin
Sinclair Waycott
Arvin Albares
Darci Poquette
Jefferson Schemmer
Mayumi Kolmetz
Leon Oldroyd
Munro Ferencz
David Darakjy
Rodrigues Campain
James Butt
Wickens Nestle
Cody Saylors
Faith Gillian
Maisha Rulapaugh
Smith Glick
Leon Oldroyd
Misaki Royster
Ivar Paprocki
Jeanfrancois Venere
Francesco Shinko
Aruna Figeroa
James Butt
Isabel Bowley
Deepesh Chui
Maria Marrier
Mayumi Kolmetz
IdCountryDate
1000Canada2026-05-25
1001India2026-05-23
1002Brazil2026-06-09
1003Italy2026-05-21
1004United Kingdom2026-05-15
1005France2026-05-24
1006United Kingdom2026-06-05
1007Argentina2026-05-26
1008Brazil2026-05-18
1009Argentina2026-05-30
1010Italy2026-06-03
1011United Kingdom2026-06-12
1012Russia2026-05-16
1013Japan2026-05-18
1014Canada2026-05-16
1015Italy2026-05-30
1016India2026-05-18
1017Italy2026-06-06
1018India2026-06-08
1019Canada2026-06-02
1020India2026-06-08
1021Australia2026-06-07
1022Canada2026-06-07
1023Japan2026-05-27
1024Germany2026-05-22
1025India2026-05-16
1026Italy2026-06-09
1027Russia2026-05-21
1028Russia2026-06-13
1029Spain2026-06-10
1030Spain2026-06-11
1031Argentina2026-06-03
1032India2026-06-07
1033Brazil2026-05-22
1034France2026-06-11
1035India2026-06-10
1036Argentina2026-05-28
1037India2026-05-22
1038India2026-06-06
1039Russia2026-05-16
1040Canada2026-05-24
1041United Kingdom2026-05-16
1042France2026-05-20
1043Japan2026-05-16
1044Russia2026-06-08
1045Canada2026-05-19
1046France2026-05-15
1047Spain2026-06-11
1048Australia2026-05-15
1049Japan2026-05-24

On-Demand Data

NameIdCountryDate
Aditya Kusko1000Japan2026-06-05
Aruna Figeroa1001France2026-05-19
James Butt1002France2026-06-10
Alejandro Perin1003Japan2026-05-19
Alejandro Perin1004Brazil2026-05-24
Maisha Rulapaugh1005Canada2026-05-27
Kaitlin Ostrosky1006Germany2026-05-18
Izzy Garufi1007Russia2026-05-18
Ivar Paprocki1008Canada2026-05-30
Rodrigues Campain1009Germany2026-05-28
James Butt1010Italy2026-05-23
Francesco Shinko1011Argentina2026-05-24
Jones Vocelka1012Japan2026-05-16
Johnson Sergi1013India2026-05-27
Claire Tollner1014Australia2026-06-10
Antonio Caudy1015United Kingdom2026-06-03
Jeanfrancois Venere1016India2026-06-13
Nicolas Iturbide1017India2026-06-12
Deepesh Chui1018Spain2026-06-07
Juan Wieser1019Spain2026-05-19
Virtual Scrolling - 20000 Rows
NameCountryRepresentativeStatus
Jennifer AmigonJapanElwin Sharvill NEGOTIATION
Chavez BriddickCanadaStephen Shaw RENEWAL
Leja CaldareraCanadaIoni Bowcher NEW
Maria MarrierGermanyElwin Sharvill NEGOTIATION
Clifford RimArgentinaXuxue Feng QUALIFIED
Costa DilliardAustraliaXuxue Feng RENEWAL
Jefferson SchemmerArgentinaIoni Bowcher QUALIFIED
Mujtaba NickaRussiaXuxue Feng RENEWAL
Salvatore StockhamAustraliaOnyama Limba NEGOTIATION
Leja CaldareraIndiaIvan Magalhaes UNQUALIFIED
David DarakjyItalyXuxue Feng QUALIFIED
Jeanfrancois VenereIndiaOnyama Limba QUALIFIED
Leon OldroydItalyAmy Elsner PROPOSAL
Murillo MaletCanadaXuxue Feng QUALIFIED
Murillo MaletArgentinaOnyama Limba QUALIFIED
Johnson SergiBrazilIoni Bowcher RENEWAL
Francesco ShinkoJapanAmy Elsner UNQUALIFIED
Mujtaba NickaUnited KingdomOnyama Limba UNQUALIFIED
Aruna FigeroaBrazilXuxue Feng NEGOTIATION
Ashley DoeUnited KingdomAnna Fali RENEWAL
Sinclair WaycottAustraliaOnyama Limba UNQUALIFIED
Ivar PaprockiGermanyIoni Bowcher NEW
David DarakjyJapanBernardo Dominic RENEWAL
Jefferson SchemmerItalyOnyama Limba PROPOSAL
Greenwood BologniaFranceElwin Sharvill NEGOTIATION
Clifford RimRussiaOnyama Limba QUALIFIED
Morrow RutaSpainAsiya Javayant UNQUALIFIED
Mayumi KolmetzGermanyXuxue Feng RENEWAL
Ivar PaprockiCanadaIvan Magalhaes NEW
Rodrigues CampainRussiaBernardo Dominic NEGOTIATION
Juan WieserItalyAmy Elsner PROPOSAL
Smith GlickJapanElwin Sharvill UNQUALIFIED
Juan WieserItalyAmy Elsner QUALIFIED
Nicolas IturbideArgentinaElwin Sharvill QUALIFIED
Mujtaba NickaSpainStephen Shaw RENEWAL
Arvin AlbaresUnited KingdomBernardo Dominic PROPOSAL
Clifford RimSpainXuxue Feng RENEWAL
Faith GillianIndiaStephen Shaw PROPOSAL
Jefferson SchemmerFranceAsiya Javayant NEW
Nicolas IturbideArgentinaIvan Magalhaes PROPOSAL

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