簡體   English   中英

選擇加載惰性 p:dataTable 的第一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM