2013-04-08 57 views
2

我在我的頁面有兩個rich:extendedDataTables。一個是「主」,另一個是從屬,因爲從屬中的數據依賴於主數據。重提富:extendedDataTable在另一個表的過濾器事件

主人爲其每列設置了filterBy。我希望能夠在主表中根據過濾器事件rerender從表。

我成功的最接近試圖挖掘到像下面的「返回」按鍵,但它不能很好地工作:

<rich:hotKey selector="#masterTableEnclosingPanel" key="return" 
    handler="doSomethingA4jFunction()" preventDefault="true" type="onkeyup"/

我使用RichFaces的3.3.3。任何想法都非常受歡迎!


按照khan的要求,我添加了更多的XHTML源代碼。我使用RichFaces的3.3.3:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="........................"> 

<f:view> 
    <head> 
     <meta http-equiv="....................."/> 
    </head> 
    <body> 
    <a4j:form id="my_form"> 

     <a4j:jsFunction name="handleMasterTableFiltering" 
      oncomplete="myCustomFilterColumnsJSFunction()" 
      reRender="slaveTablePanel"/> 

     <rich:panel id="masterTablePanel"> 

<!-- MASTER TABLE --> 
      <a4j:region id="masterTableEnclosingRegion"> 
       <rich:extendedDataTable rowKeyVar="rkv" 
        height="284px" width="100%" id="masterTable" rows="10" 
        columnClasses="col" value="#{BackingBean.masterTableModel}" 
        binding="#{BackingBean.masterTable}" 
        selection="#{BackingBean.selectionMasterTable}" var="master" 
        enableContextMenu="false" selectionMode="multi"> 

        <a4j:support event="onselectionchange" 
         action="#{BackingBean.handleSelectionMasterTable}" 
         reRender="slaveTablePanel" /> 

        <rich:column width="40px" sortBy="#{'ID'}" filterBy="#{'ID'}"> 
         <f:facet name="header"> 
          <h:outputText value="ID" /> 
         </f:facet> 
         <h:outputText value="#{master.id}" id="master_id"/> 
        </rich:column> 

        <rich:column width="120px" sortBy="#{'NAME'}" filterBy="#{'NAME'}"> 
         <f:facet name="header"> 
          <h:outputText value="Name" /> 
         </f:facet> 
         <h:outputText value="#{master.name}" id="master_name" /> 
        </rich:column> 

        <rich:column width="140px" sortBy="#{'DESCRIPTION'}" filterBy="#{'DESCRIPTION'}"> 
         <f:facet name="header"> 
          <h:outputText value="Description" /> 
         </f:facet> 
         <h:outputText value="#{master.description}" id="master_desc" /> 
        </rich:column> 

       </rich:extendedDataTable> 
      </a4j:region> 
<!-- END MASTER TABLE --> 

     </rich:panel> 

     <rich:spacer height="10px" /> 

     <rich:panel id="slaveTablePanel"> 

<!-- SLAVE TABLE --> 
      <rich:panel id="slaveTableEnclosingPanel" 
        style="height:325px; width:1210px; overflow:auto; border:0px; padding-top:0px;"> 
       <rich:extendedDataTable rowKeyVar="rkv" 
        height="282px" width="1758px" id="slaveTable" rows="10" 
        columnClasses="col" selectionMode="multi" 
        value="#{BackingBean.slaveTableModel}" 
        selection="#{BackingBean.selectionSlaveTable}" 
        binding="#{BackingBean.slaveTable }"  
        var="slave" enableContextMenu="false"> 

        <a4j:support event="onselectionchange" immediate="true" 
         action="#{BackingBean.handleSelectionSlaveTable}"/> 

        <rich:column width="40px" sortBy="#{'ID'}" filterBy="#{'ID'}"> 
         <f:facet name="header"> 
          <h:outputText value="ID" /> 
         </f:facet> 
         <h:outputText value="#{slave.id}" id="slave_id"/> 
        </rich:column> 

        <rich:column width="120px" sortBy="#{'NAME'}" filterBy="#{'NAME'}"> 
         <f:facet name="header"> 
          <h:outputText value="Name" /> 
         </f:facet> 
         <h:outputText value="#{slave.name}" id="slave_name" /> 
        </rich:column> 

        <rich:column width="140px" sortBy="#{'DESCRIPTION'}" filterBy="#{'DESCRIPTION'}"> 
         <f:facet name="header"> 
          <h:outputText value="Description" /> 
         </f:facet> 
         <h:outputText value="#{slave.description}" id="slave_desc" /> 
        </rich:column> 

       </rich:extendedDataTable> 
      </rich:panel> 
<!-- END SLAVE TABLE --> 

     </rich:panel> 

     <rich:hotKey selector="#masterTablePanel" key="return" 
      handler="handleMasterTableFiltering()" 
      preventDefault="true" type="onkeyup" /> 

    </a4j:form> 

    </body> 
</f:view> 
</html> 
+0

請粘貼您的代碼 – hayat 2013-04-10 10:52:41

+0

我很努力地在我的評論中啓用語法突出顯示,但無法使其工作。有什麼我失蹤?我通過Meta Stackoverflow文章和Google美化頁面閱讀並嘗試了他們的建議,但我的代碼仍然是黑色的。我看過其他的代碼是語法高亮的帖子。 – genchev 2013-04-10 16:21:00

回答

1

解決的辦法是把slaveTablePanelmasterTablePanelreRender

<rich:extendedDataTable 
    id="masterTable" .......... 
    reRender="slaveTablePanel" > 

問候:)

0

嘗試添加以下到主表:

<a4j:support event="onkeyup" 
      oncomplete="myCustomFilterColumnsJSFunction()" 
      reRender="slaveTablePanel" /> 
+0

''onkeyup''在'masterTable'中的任何按鍵被激活。這意味着當我按鍵輸入過濾器文本時它會運行,並且此行爲不適合我的目的。把它放在一邊,它仍然不能提供我需要的穩定性。有時'slaveTable'是'reRendered',有時不是。按下「Enter」鍵後,通常會清除過濾器文本。 – genchev 2013-04-25 19:07:46

相關問題