【问题标题】:How to dynamically change the columns of a data table?如何动态更改数据表的列?
【发布时间】:2011-12-14 14:31:20
【问题描述】:

我正在使用 JSF 2.0 和 PrimeFaces 2.2。我有一个数据表,其列需要根据下拉菜单中的选择进行更新。我不想创建多个数据表,因为下拉列表中有很多值,根据将显示哪些列值以及数据表中的列数。

可以吗?

好的,让我非常具体,假设我在下拉菜单中有十个项目,并且在每个选择中都有不同类型的数据表,我必须在从下拉菜单中选择时显示,我不想制作 10 种不同类型的数据表,我想要一个数据表,我可以在其中根据我的选择选择列(数据表有很多相同的条目,所以每个数据表中都会有很多重复的条目)。

【问题讨论】:

  • 您想在已经实现的数据表中拥有不同的列并根据您的选择显示/隐藏它们?还是您想根据您的选择更改列表(dataTable 值)(基本上这意味着每个选项 dataTable 将显示不同的记录)?
  • 是的,我希望数据表中已经实现了不同的列,并根据我的选择显示/隐藏它们。
  • 你不是很具体;我更新了答案并添加了 BalusC 解决方案!

标签: jsf-2 datatable primefaces


【解决方案1】:

是的!我们一起想办法(假设你已经为dataTable组件提供了一个默认列表):

<p:dataTable ...with various attributes... id="myTable" value="#{myBean.recordList}">
   ...and various columns...
</p:dataTable>
<h:selectOneMenu value="...">
   <f:selectItems ...your items...>
   <p:ajax event="change" listener="#{myBean.myMethod}" update="myTable" />
</h:selectOneMenu> 

myMethod 将是一种您更改recordList 然后刷新(更新)表格组件的方法。当然你得放一个外部表单组件。

更新:如果您想在数据表中实现不同的列并根据您的选择显示/隐藏它们(BalusC 答案):

<p:dataTable ...with various attributes... id="myTable" value="#{myBean.recordList}">
   <p:column rendered="#{myBean.myValue == 1}" >
      first column
   </p:column>
   <p:column rendered="#{myBean.myValue == 2}" >
      second column
   </p:column>
   <p:column rendered="#{myBean.myValue == 3}" >
      third column
   </p:column>
</p:dataTable>
<h:selectOneMenu value="#{myBean.myValue}">
   <f:selectItem itemLabel="First Column" itemValue="1" />
   <f:selectItem itemLabel="Second Column" itemValue="2" />
   <f:selectItem itemLabel="Third Column" itemValue="3" />
   <p:ajax event="change" update="myTable" />
</h:selectOneMenu> 

【讨论】:

  • @curious 所以,这意味着您需要 10 个记录列表(或更改不相同的记录)-在这种情况下,您将不得不使用第一个解决方案...在您拥有的每个选择上一个 ajax 事件,它向您的方法发出请求,更改 recordList 值,然后用新值更新 dataTable...您想要完整的代码吗? :)
【解决方案2】:

【讨论】:

  • 注意——showcase-labs-ui 使用 PF 3.0,您可以在页面底部看到。不过,在这种情况下,PF 2 中也可以使用动态列...
猜你喜欢
  • 2014-01-26
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
  • 2015-12-05
  • 2017-07-30
  • 1970-01-01
相关资源
最近更新 更多