[英]Select first row on load of lazy p:dataTable
在頁面加載時需要一些幫助來選擇 PrimeFaces p:dataTable
第一行,這是我目前的代碼:
<p:dataTable id="dtbList" value="#{Controller.items}" var="item" widgetVar="dataTableList" lazy="true"
selection="#{Controller.selectedValue}" rowKey="#{item.key}"
scrollable="true" scrollHeight="133">
<p:ajax event="rowSelectRadio" listener="#{Controller.handleSelectList}" update="dtbList"
oncomplete="resetScroll();"/>
...
...
...
</p:dataTable>
我試過使用 ajax 事件無濟於事
<p:ajax event="page" onsuccess="PF('dataTableList').selectRow(0);"/>
想知道我哪里做錯了。
如果您知道第一行的 rowKey(id),請嘗試在 dataTable 組件中添加屬性dynamic="true" ,如下所示:
<p:dataTable id="dtbList"
value="#{Controller.items}" var="item"
widgetVar="dataTableList" lazy="true"
selection="#{Controller.selectedValue}"
rowKey="#{item.key}"
scrollable="true" scrollHeight="133"
dynamic="true">
...
...
...
</p:dataTable>
並且,在您的 bean(Controller) 中創建一個由@PostConstruct注釋的方法,在女巫中您可以選擇最佳元素。 像這樣:
@PostConstruct
public void init() {
this.selectedValue = new SelectedValueEntityType();
this.selectedValue.setKey('yourKey');
}
page
事件在分頁時觸發,而不是在初始加載時觸發。
您可能想讓控制器成為您已實現的LazyDataModel
的屬性(假設您這樣做了;如果您使用的是JpaLazyDataModel
,請擴展它)。 現在您可以從load
方法訪問控制器。 您現在可以簡單地檢查是否沒有進行任何選擇,並將load
方法中獲取的第一個項目設置為控制器的選定項目。
另見: https ://primefaces.github.io/primefaces/12_0_0/#/components/datatable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.