我在获取Column组件对象时遇到问题。
以下是应该实施的逻辑:
基本上这只是一个简单的用户唯一的复选框 - 列可见性“记住”事物。
现在,一切都很好,我在用户切换其中一个复选框时调用ajax监听器方法:
<p:commandButton id="columnToggler" type="button" value="Columns"/>
<p:columnToggler datasource="grid" trigger="columnToggler">
<p:ajax event="toggle" listener="#{bean.onColumnToggle}"/>
</p:columnToggler>
问题是我不知道如何获取Column组件对象,因为与cellEditEvent不同,toggleEvent没有返回Column对象的getColumn()方法。
有没有人知道如何获得它?
答案 0 :(得分:1)
columnChooser组件提供了可选的切换ajax行为 在服务器端侦听切换事件。监听这种行为 获取一个org.primefaces.event.ToggleEvent作为给出的参数 正在切换的列的可见性和索引。
请尝试这个例子:
<p:growl id="growl" showDetail="true" sticky="true" />
...
<p:commandButton id="columnToggler" type="button" value="Columns" />
<p:columnToggler datasource="grid" trigger="columnToggler">
<p:ajax event="toggle" listener="#{bean.onColumnToggle}" update="growl"/>
</p:columnToggler>
在你的bean中:
public void onColumnToggle(ToggleEvent event) {
final Visibility visibility = event.getVisibility();
final FacesMessage msg = new FacesMessage();
msg.setSummary("Column index " + event.getData().toString() + " toggled");
msg.setDetail("Visibility: " + visibility);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
答案 1 :(得分:1)
也许你可以使用数据表的方法
DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(formId).findComponent(tableId);
看一下这些方法,有一个名为getColumns的方法很有用。