2016-01-29 3 views
1

У меня есть p: datatable с несколькими режимами выбора и paginator.Непонятные шрифты datatable select all with paginator

<p:datatable value=#{rows} selection=#{selectedRows} pagintor="true" rows="20" rowsPerPageTemplate="10,20,50,100" paginatorPosition="bottom"> 
    <p:column selectionMode="multiple"/> 
    <p:ajax event="toggleSelect"/> 
    ... columns ... 
</p:datatable> 

Когда я нажимаю кнопку заголовка, все строки выбираются. Когда я нажимаю на заголовок, чтобы выбрать все строки, а затем хочу экспортировать выбранные строки (используя значения «selection»), он возвращает только 20 объектов. Я ожидаю, что когда я использую флажок заголовка, он выбирает все строки данных, а не только одну из страниц. У меня есть данные с более чем 200 страницами, поэтому вы можете себе представить, что очень утомительная работа заключается в том, чтобы экспортировать все при использовании paginator;).

Я полагаю, что это ошибка, которую я должен зарегистрировать, или я что-то упускаю? Я просмотрел документацию, но он ничего не говорит об использовании режима множественного выбора вместе с разбиением на страницы ... Спасибо за ваши отзывы!

ответ

0

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

Это неправильное ожидание.

Я полагаю, что это ошибка, я должен войти,

Неа.

или я что-то упускаю?

Нет, это по дизайну. Так что, не имея неправильного ожидания, вы ничего не пропустили. Тот факт, что вы первый в SO, чтобы спросить об этом, а второй, если подсчитать количество запросов на форуме PrimeFaces, является указанием на это.

Даже GMail не делает этого кстати. Они дают вам возможность выбрать все сообщения на странице вы находитесь, и когда вы сделаете это, они дают вам дополнительную возможность выбрать все сообщения на всех страницах

+1

Это недопустимые аргументы. Похоже, что он не учитывается и поэтому принимается за выбор дизайна. Может быть, никто не стал задавать этот вопрос? Возможно, некоторые люди ленивы и выбирают каждую страницу, спрашивая, почему не может быть флажок «Выбрать все страницы»? Кроме того, и самое главное, если никто не заботился о Gmail, почему DID они добавляют функциональность для выбора всех страниц? ;) Видимо, у пользователей Gmail также было это ожидание ... В любом случае, если я подумаю о регистрации этого, это будет как усовершенствование (а не ошибка, о которой я говорю), но сначала нужен элегантный способ. Спасибо за разъяснение. –

+0

Вопрос задан раньше ... 1 раз ... ты второй. Возможно, «выбрать все» не нужно столько, сколько вы думаете, или у других есть простое решение ... – Kukeltje

-1

ДЛЯ JSF 2, для выбора всех строк на DataTable в SelectionMode кратного с постраничной навигацией = TRUE: в Page

 

            
 
<p:dataTable widgetVar="tableArea" yourtags...> 
 
    <p:ajax event="toggleSelect" oncomplete="teste()" /> /// toggleSelect is dispared on click to checkbox header 
 
    <p:column id="columnId" selectionMode="multiple"/>

в ЯШАХ:

function teste(){ 
 
\t \t 
 
\t var checked = $(document).find(":checkbox")["0"].checked; ///Find checkbox header and verify if checkbox is checked 
 
\t if(checked == true){ 
 
\t \t PF('tableArea').selectAllRows(); // if true, selectAllRows from datatable 
 
\t } else { 
 
\t \t PF('tableArea').unselectAllRows(); // 
 
\t } \t \t 
 
}

0

У меня было то же требование - select all rows across pages.

Что я сделал - при условии, что <p:inputSwitch /> переключает все строки по всем страницам.

скопирована и как ниже -

<p:dataTable id="id" var="var" widgetVar="wvar" rowsPerPageTemplate="7,15" reflow="true" 
    value="#{backingBean.dataModel}" paginator="true" rows="7" rowIndexVar="index" rowKey="#{var.id}" 
    paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}" 
    selection="#{backingBean.selectedItems}"> 
<c:facet name="header"... 
<p:inputSwitch value="#{backingBean.allRecords}" onLabel="All" offLabel="None" > 
    <p:ajax onstart="if (PF('wvar').getSelectedRowsCount() == 0) PF('wvar').selectAllRows(); else PF('wvar').unselectAllRows();" /> 
</p:inputSwitch> 

private boolean allRecords;//Getter++Setter++ 

И, определенное toggleSelect событие, как показано ниже -

<p:ajax event="toggleSelect" onstart="if (PF('wvar').getSelectedRowsCount() == 7 || PF('wvar').getSelectedRowsCount() == 15) PF('wvar').selectAllRows(); else PF('wvar').unselectAllRows();" /> 

7 где и 15 происходит от DataTable rowsPerPageTemplate="7,15".

Работает для меня. (PrimeFaces 5.3)

Смежные вопросы