过滤后的Primefaces数据表排序
Primefaces datatable sorting after filtering
我有一个 p:dataTable 存储处理过的表单的结果,我执行以下操作:
- 填写表单值。
- 提交。
- 数据 table 已填充 -- 过滤任何列。
- 更改表单值。
- 提交。
- 数据 table 填充了新结果。
- 按任意列排序 -- 显示 #3 的筛选结果。
我有一个用于过滤值的数组列表,但我没有在 bean 中对其进行任何操作。在提交时,我调用了一个将 dataTable 转换为 primefaces.components.datatable.DataTable 的 actionListener,然后在处理表单之前对其调用了 resetValue()(请参见下面的代码片段)。
我尝试了多种重置、清除和更新数据表的方法,但无法解决上述问题。仅供参考,这是我的 p:dataTable 标签:
<p:dataTable
id="resultsDataTable"
rendered="#{entityReportBean.isResultsPopulated}"
var="change"
value="#{entityReportBean.entityChangeDto}"
styleClass="resultsPanel"
rows="100"
paginator="true"
paginatorPosition="top"
paginatorTemplate="#{PreviousPageLink} Previous {CurrentPageReport} Next {NextPageLink}"
filterEvent="enter"
filteredValue="#{entityReportBean.filteredResults}" >
这是 actionListener:
public void onSubmit() {
FacesContext context = FacesContext.getCurrentInstance();
DataTable resultsTable = (DataTable) context.getViewRoot().findComponent("results:resultsDataTable");
resultsTable.resetValue();
...
我是 JSF/Primefaces 的新手,所以可能有一些我不知道的基本操作。有什么建议吗?
所以我意识到在我的 actionListener 中尝试做任何事情是没有意义的,因为排序时不会调用它。所以我在dataTable上加了一个ajax 'sort'事件,给listener加了一个resultsTable.updateValue(entityChangeDto);
。现在一切都好了。
我有一个 p:dataTable 存储处理过的表单的结果,我执行以下操作:
- 填写表单值。
- 提交。
- 数据 table 已填充 -- 过滤任何列。
- 更改表单值。
- 提交。
- 数据 table 填充了新结果。
- 按任意列排序 -- 显示 #3 的筛选结果。
我有一个用于过滤值的数组列表,但我没有在 bean 中对其进行任何操作。在提交时,我调用了一个将 dataTable 转换为 primefaces.components.datatable.DataTable 的 actionListener,然后在处理表单之前对其调用了 resetValue()(请参见下面的代码片段)。
我尝试了多种重置、清除和更新数据表的方法,但无法解决上述问题。仅供参考,这是我的 p:dataTable 标签:
<p:dataTable
id="resultsDataTable"
rendered="#{entityReportBean.isResultsPopulated}"
var="change"
value="#{entityReportBean.entityChangeDto}"
styleClass="resultsPanel"
rows="100"
paginator="true"
paginatorPosition="top"
paginatorTemplate="#{PreviousPageLink} Previous {CurrentPageReport} Next {NextPageLink}"
filterEvent="enter"
filteredValue="#{entityReportBean.filteredResults}" >
这是 actionListener:
public void onSubmit() {
FacesContext context = FacesContext.getCurrentInstance();
DataTable resultsTable = (DataTable) context.getViewRoot().findComponent("results:resultsDataTable");
resultsTable.resetValue();
...
我是 JSF/Primefaces 的新手,所以可能有一些我不知道的基本操作。有什么建议吗?
所以我意识到在我的 actionListener 中尝试做任何事情是没有意义的,因为排序时不会调用它。所以我在dataTable上加了一个ajax 'sort'事件,给listener加了一个resultsTable.updateValue(entityChangeDto);
。现在一切都好了。