页面加载后按选择OneMenu的默认值筛选数据表



加载页面后,我需要用默认值过滤数据表(请参阅selectOneMenu'chkNot',在这种情况下为false)

当前情况:筛选值被选中,但数据表没有被筛选。如果我更改值,那么它运行良好

<ui:composition template="templates/layout.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:components="http://java.sun.com/jsf/composite/components"
                xmlns:p="http://primefaces.org/ui" >
  <ui:define name="title">Test Page</ui:define>
  <ui:define name="content">
        <h:form id="tranForm">
          <p:dataTable value="#{myBean.ordersAll}" var="order" 
                        id="myDTable" widgetVar="myDTable"
                        filteredValue="#{myBean.ordersAllFiltered}">
              <p:column filterBy="#{order.selected}" filterMatchMode="exact" headerText="Filter">
                  <f:facet name="filter">
                      <p:selectOneMenu id="chkNot" widgetVar="chkNot" 
                                        value="#{false}" 
                                        onchange="PF('myDTable').filter()" >
                      <f:selectItem itemLabel="All" itemValue="#{null}" noSelectionOption="true" />
                      <f:selectItem itemLabel="Yes" itemValue="#{true}" />
                      <f:selectItem itemLabel="No" itemValue="#{false}" />
                    </p:selectOneMenu>
                  </f:facet>
                  <h:outputText value="#{order.selected}"/>
              </p:column>
          </p:dataTable>
    </h:form>
  </ui:define>
</ui:composition>
filter函数由PF('myDTable').filter()触发,因此您需要在页面加载时触发该事件。一种方法是使用javascript,例如:
<script  type="text/javascript" target="body">
$j = jQuery;
$j(document).ready( function() {
PF('myDTable').filter();   
});
</script>  

更新:

另一种方法是从backingbean执行过滤函数:

public void executeFilter() {
    RequestContext rc = RequestContext.getCurrentInstance();
    rc.execute("PF('myDTable').filter();");
}

最新更新