使用 columnToggler 获取 toggleEvent 中的列组件对象
Get column component object in toggleEvent using columnToggler
我在获取 Column 组件对象时遇到问题。
这里是应该实现的逻辑:
- 用户使用 primefaces columnToggler 切换 table 列(当用户点击复选框时,ajax 侦听器方法被调用)
- 在侦听器方法中,我必须检索 Column 组件对象并调用在数据库中存储 Column 组件对象及其可见性参数的方法,以便在页面加载时检索它。
基本上这只是一个简单的用户唯一的复选框列可见性 "remember"。
现在,一切正常,当用户切换其中一个复选框时,我正在调用 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 没有 returns Column 对象的 getColumn() 方法。
有没有人知道如何获得它?
Optional toggle ajax behavior is provided by columnChooser component
to listen to toggle events at server side. Listener of this behavior
gets an org.primefaces.event.ToggleEvent as a parameter that gives the
visibility and index of the column being toggled.
请试试这个例子:
<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);
}
也许你可以使用数据表的方法
DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(formId).findComponent(tableId);
看看这些方法,有一个叫做 getColumns 的方法很有用。
我在获取 Column 组件对象时遇到问题。
这里是应该实现的逻辑:
- 用户使用 primefaces columnToggler 切换 table 列(当用户点击复选框时,ajax 侦听器方法被调用)
- 在侦听器方法中,我必须检索 Column 组件对象并调用在数据库中存储 Column 组件对象及其可见性参数的方法,以便在页面加载时检索它。
基本上这只是一个简单的用户唯一的复选框列可见性 "remember"。
现在,一切正常,当用户切换其中一个复选框时,我正在调用 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 没有 returns Column 对象的 getColumn() 方法。
有没有人知道如何获得它?
Optional toggle ajax behavior is provided by columnChooser component to listen to toggle events at server side. Listener of this behavior gets an org.primefaces.event.ToggleEvent as a parameter that gives the visibility and index of the column being toggled.
请试试这个例子:
<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);
}
也许你可以使用数据表的方法
DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent(formId).findComponent(tableId);
看看这些方法,有一个叫做 getColumns 的方法很有用。