【问题标题】:Ajax update of datatable from a modal after filtering过滤后从模式中的数据表的 Ajax 更新
【发布时间】:2015-08-23 00:39:20
【问题描述】:

我的问题与此非常相似: Ajax update doesn't work, when using filter on datatable (JSF, Primefaces).

我有一个dataTable,表中的每个条目/行都有一个“打开”按钮(commandButton),单击该按钮会打开一个dialog。我在对话框中有一个可以更新和保存的表单。保存更改后,我将返回 dataTable 关闭我所在的对话框,更新表中条目对话框中发生的保存结果(单击其“打开”以打开dialog)。

如果我保存来自dialog 的结果并使用update 属性更新表条目上的保存结果,它工作正常。但是,如果首先过滤了dataTable,然后打开了dialog,那么在我实际刷新/重新加载页面之前,update 不会导致表条目的更新。

oncomplete="PF(':parentForm:dataTableVar').filter()"

oncomplete="PF(':parentForm:dataTableVar').clearFilters()"

在我引用的另一个问题中推荐的解决方案似乎对我的情况没有任何影响。

有什么建议吗?


我使用 JSF v2.1.19 和 PrimeFaces v5.1。

【问题讨论】:

    标签: ajax jsf primefaces datatable


    【解决方案1】:

    你需要在dataTable的属性filteredValue中标记列表。 例如:<p:dataTable filteredValue="#{bean.anotherListWithTheSameType}" />

    在对话框中,它是必要的filteredValue。 从这里:http://www.primefaces.org/docs/vdl/4.0/primefaces-p/dataTable.html

    【讨论】:

    • 是这样吗?我只是指定一个列表来保存过滤的对象?我在哪里真正使用该列表?只是想了解它与我面临的问题有何关系。
    【解决方案2】:

    我用id 代替widgetVar 是我的错误。这个:

    oncomplete="PF('myTableWidget').filter()"
    

    如果有问题的dataTable 看起来像:

    <p:dataTable id="myTable" widgetVar="myTableWidget"...
    

    我这样尝试是错误的:

    oncomplete="PF('myTable').filter()"
    

    【讨论】:

      猜你喜欢
      • 2019-11-06
      • 2013-07-30
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-07
      相关资源
      最近更新 更多