Нужна помощь на правильном пути выбора первую строку primefaces DataTable при обновлении страницы, загрузки, сортировки, выгружаемогоPrimefaces LazyLoading Таблица Выберите Первая строка по умолчанию
<p:dataTable id="clientTable" widgetVar="clientTableVar"
var="client"
value="#{maintenanceAccountController.clientLazyDataModel}"
paginator="true" rows="10"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {CurrentPageReport}"
rowsPerPageTemplate="5,10,20" paginatorPosition="bottom"
pageLinks="5" lazy="true" sortBy="#{client.cclnCode}"
sortOrder="descending"
selection="#{maintenanceAccountController.selectedClient}"
selectionMode="single" filterDelay="500">
<p:column id="cclnCodeColumn" headerText="Client Code"
sortBy="#{client.cclnCode}" filterBy="#{client.cclnCode}"
filterMaxLength="10">
<h:outputText value="#{client.cclnCode}" />
<f:event listener="#{maintenanceAccountController.saveAccount}"
type="preRenderView"></f:event>
</p:column>
<p:column id="cclnNamenColumn" headerText="Client Name"
sortBy="#{client.cclnName}" filterBy="#{client.cclnName}"
filterMaxLength="50">
<h:outputText value="#{client.cclnName}" />
</p:column>
</p:dataTable>
Я в настоящее время решить эту проблему с помощью этот фрагмент в моем управляемом bean-компоненте работает, он фактически выбирает и выделяет строку.
Это работает, потому что выбранный клиент имеет значение null, когда страница обновляется, а поисковая система, сортировка и фильтрация автоматически задают выбранный клиент равным нулю. Поэтому, когда таблица пытается найти выбранного клиента, выполняется логика if, и я могу выбрать первую строку таблицы.
Но я только что сделал свой приемник сеттером, и выбранная строка не вызывает событие, выбранное в строке (спросит эту проблему в другом вопросе).
public MaintenanceAccountClient getSelectedClient()
{
if (selectedClient == null)
{
int count = clientLazyDataModel.getRowCount();
int index = clientLazyDataModel.getRowIndex();
if (index < 0 && count > 0)
{
clientLazyDataModel.setRowIndex(0);
selectedClient = clientLazyDataModel.getRowData();
}
}
return selectedClient;
}
Пожалуйста, обратите внимание, что я использую LazyDataModel поэтому список клиентов, загружаются только в RenderPhase, если я не ошибаюсь.
Я действительно мог бы вам помочь. Образец кода действительно будет оценен.
PrimeFaces 3,5 JSF 2,1
Вы хотите всегда выбрать первую строку таблицы? Используйте клиентскую сторону api таблицы данных Primefaces. Он имеет функцию javascript под названием 'selectRow (r, silent)'. Вы можете присоединить эту функцию к datatable, используя функцию 'on()' jquery для данных datatable events '' 'sort' и' filter'. – Jens
hH спасибо за отзыв, но вопрос выше - это упрощение моей проблемы. Я также хочу установить выбранный атрибут в зависимости от значения базы данных. Таким образом, я действительно ищу проблематичный способ правильного задания значения в формате lansy datatable. –