Как динамически изменять столбцы таблицы данных? - PullRequest
0 голосов
/ 14 декабря 2011

Я использую JSF 2.0 и PrimeFaces 2.2. У меня есть таблица данных, столбцы которой необходимо обновить в соответствии с выбором из выпадающего меню. Я не хочу создавать несколько таблиц данных, так как в раскрывающемся списке есть много значений, в зависимости от того, какие значения столбцов, а также количество столбцов в datatable будут отображены.

Возможно ли это сделать?

Хорошо, позвольте мне быть очень конкретным, предположим, у меня есть десять пунктов в выпадающем меню, и в каждом выборе есть разные типы таблиц данных, которые я должен показывать при выборе из выпадающего меню, я не хочу делать 10 различных типов Для получения данных, я хочу одну таблицу данных, в которой я могу выбрать столбцы в соответствии с моим выбором (в таблицах данных много одинаковых записей, поэтому в каждом из них будет много повторяющихся записей).

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

ДА!Давайте вместе найдем способ (предположим, что вы предоставили список по умолчанию для компонента 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, а затем обновите (обновите)компонент таблицы.Конечно, вы должны поместить внешний компонент формы.

ОБНОВЛЕНИЕ: Если вы хотите, чтобы в столбце dataTable уже были реализованы разные столбцы, и отображать / скрывать их на основе вашего выбора (ответ 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> 
0 голосов
/ 14 декабря 2011

Вы проверили;

http://www.primefaces.org/showcase/ui/datatableDynamicColumns.jsf

редактировать: витрина 2.2.1

...