Как сделать вкладку с теми же данными и разбить ее на страницы

Я хочу сделать вкладку с компонентом Primefaces с тремя вкладками, внутри вкладок я буду использовать таблицу данных с входным текстом. Можно ли использовать одни и те же данные и разные поля на трех вкладках? Можно ли разбивать все вкладки одновременно, чтобы отображать один и тот же регистр одновременно? Извините за мой плохой английский.

Представьте себе список объектов автомобилей с такими свойствами: цвет, форма, колеса, название, модель и цена.

Tabview
Tab1 Tab2 Tab3
1 цвет строки | формовочные колеса | название модели | цена
2 строка
3 строка

Я хочу использовать одни и те же данные и одновременно разбивать на три вкладки, чтобы иметь одинаковые строки на трех вкладках.


person Moselan    schedule 19.08.2019    source источник
comment
что означает одинаковые поля данных и разные поля? Ваш вопрос не ясен. Вы имеете в виду, что подкачка таблицы данных на вкладке 1 должна отражаться в таблице данных на вкладке 2 и 3? например если вы переходите на страницу 3 на вкладке 1, а вы переходите на вкладку 3, она также находится на странице 3? Поскольку отображение отдельных полей одной и той же базовой модели, конечно, возможно, поскольку вы сами решаете, что показывать.   -  person Kukeltje    schedule 19.08.2019
comment
Вы имеете в виду, что подкачка таблицы данных на вкладке 1 должна отражаться в таблице данных на вкладке 2 и 3? например если вы переходите на страницу 3 на вкладке 1, а вы переходите на вкладку 3, она также находится на странице 3? Точно. Я имею в виду, что все вкладки имеют одинаковую таблицу данных, и я делю только строки на трех вкладках.   -  person Moselan    schedule 20.08.2019
comment
разделение столбцов на 3 вкладки? ;-) Тогда начните здесь: pdatatable stackoverflow.com/questions/10006778/ set-page-on-pdatatable и установите эту «первую» переменную в свойстве, которое используется всеми таблицами данных, и через ajax обновите другие таблицы данных, когда вы просматриваете одну из них.   -  person Kukeltje    schedule 20.08.2019


Ответы (1)


Возможно. Вы можете добавить событие в свой tabView. А затем измените видимость столбцов вашего dataTable. Код может быть примерно таким:

<p:tabView activeIndex="#{bean.activeTab}">
    <p:ajax event="tabChange" update="@([id$=dataTable])" />

    <p:tab title="Tab1">
    <p:tab title="Tab2">
    <p:tab title="Tab3">
</p:tabView>

<p:dataTable id="dataTable" value="#{bean.cars}">
    <p:column headerText="Colour" rendered="#{bean.activeTab == 0}">
        ...
    </p:column>

    <p:column headerText="Form" rendered="#{bean.activeTab == 0}">
        ...
    </p:column>

    <p:column headerText="Wheels" rendered="#{bean.activeTab == 1}">
        ...
    </p:column>

    <p:column headerText="Name" rendered="#{bean.activeTab == 1}">
        ...
    </p:column>

    <p:column headerText="Model" rendered="#{bean.activeTab == 2}">
        ...
    </p:column>

    <p:column headerText="Price" rendered="#{bean.activeTab == 2}">
        ...
    </p:column>
</p:dataTable>
person Blarzek    schedule 23.08.2019
comment
Я думаю, что для такого решения вам лучше использовать tabMenu. Вкладка бесполезна, если таблица данных находится за ее пределами. Но это могло сработать. Не уверен, что вам нужно обновление все время (в этом случае вы также можете сделать это чисто на стороне клиента с отображением/скрытием столбцов с помощью javascript. Не нужно каждый раз обращаться к серверу туда и обратно. И помните, что OP хочет чтобы оставаться в той же строке при переключении, поэтому прокрутка все еще должна храниться в памяти и применяться после переключения вкладок.Так что многого еще не хватает, но это способ попробовать - person Kukeltje; 23.08.2019