1
我想在数据表中做一个过滤器(primefaces 3.5)。只有当用户点击一个commandLink时才会触发过滤器。primefaces - 数据过滤器
<h:commandLink title="#{open}"
onclick="$('#form\\:filteredTable\\:statusColumn_filter').val('OPEN'), filteredTable.filter()">
<h:graphicImage name="16x16.png" styleClass="ico" />
</h:commandLink>
我的表:
<h:form id="form">
<h:panelGroup>
<div>
<p:dataTable widgetVar="filteredTable" var="y" value="#{x}" rendered="#{w.showFilterButtons}" filteredValue="#{w.filteredX}">
<p:column id="statusColumn" headerText="label"
filterBy="#{y.status}" filterMatchMode="exact"
filterStyle="display:none;"
filterOptions="#{w.statuses}">
<h:outputText value="#{y.status.name}"/>
</p:column>
</p:dataTable>
</div>
</h:panelGroup>
</h:form>
我有3个问题与此代码:
1 - 过滤器不起作用。如果我点击commandLink,页面会重新加载但没有被过滤。可能是因为#form \:filteredTable \:statusColumn_filter').val()返回undefined。所以我想我没有设置值来做滤波器(对吧?)
2 - 我想做一个默认的过滤器,所以当数据表第一次加载时,它已经被状态过滤了。
3 - 此数据表在Google地图中弹出。但是当我点击commandLink时,整个页面都会重新加载,所以弹出窗口会“关闭”,地图会返回到初始缩放。这样,用户将不得不再次缩放,单击地图上的标记以再次打开弹出窗口以查看过滤的数据。不是很好。有一种方法只能重新加载数据表?