1

テーブルがあり、セルをクリックしてダイアログを表示したいのですが、rowSelectイベントしかありません。それを行うことは可能ですか?...

この場合、行をクリックしてからダイアログにオブジェクトの値を表示しますが、ブロックをクリックしてダイアログを表示したいです

 <h:form id="frm1">
            <p:growl id="growl" showDetail="true"/> 
            <p:commandButton value="List" actionListener="#{tableBean.listCars()}" update="dtCar"/>

            <p:dataTable id="dtCar" var="car" value="#{tableBean.carModel}"
                         selectionMode="single" >  

                <p:ajax event="rowSelect" listener="#{tableBean.readModel}"
                        update=":frm1:display :frm1:growl" oncomplete="carDialog.show()" />  

                <p:column id="model">  
                    <f:facet name="header">  
                        Model  
                    </f:facet>  
                    <h:outputText value="#{car.model}" />  
                </p:column>  

                <p:column id="year">  
                    <f:facet name="header">  
                        Year  
                    </f:facet>  
                    <h:outputText value="#{car.year}" />  
                </p:column>  

                <p:column id="manufacturer">  
                    <f:facet name="header">  
                        Manufacturer  
                    </f:facet>  
                    <h:outputText value="#{car.manufacturer}" />  
                </p:column>  

                <p:column id="color">  
                    <f:facet name="header">  
                        Color  
                    </f:facet>  
                    <h:outputText value="#{car.color}" />  
                </p:column>  

                <p:column>
                    <p:commandButton id="viewButton" value="View" icon="ui-icon-search"  
                                     update=":frm1:display" oncomplete="carDialog.show()" actionListener="#{tableBean.leer(car)}"/>                     
                </p:column>
            </p:dataTable> 

            <p:dialog id="dialog" header="Car Detail" widgetVar="carDialog" resizable="false"  
                      showEffect="clip" hideEffect="fold">  

                <h:panelGrid id="display" columns="2" cellpadding="4">  

                    <h:outputText value="Model:" />  
                    <h:outputText value="#{tableBean.selectedCar.model}" />  

                    <h:outputText value="Year:" />  
                    <h:outputText value="#{tableBean.selectedCar.year}" />  

                    <h:outputText value="Manufacturer:" />  
                    <h:outputText value="#{tableBean.selectedCar.manufacturer}" />  

                    <h:outputText value="Color:" />  
                    <h:outputText value="#{tableBean.selectedCar.color}" />  
                </h:panelGrid>  
            </p:dialog>  

        </h:form>
4

1 に答える 1

4

Primefaces は、セル選択の在庫サポートを提供していません。あなたは即興する必要があります。

  1. 目的のセルをパネル コンポーネントにラップする

       <p:column id="model">  
           <f:facet name="header">  
              Model  
           </f:facet> 
           <h:panelGrid> 
              <h:outputText value="#{car.model}" />  
           </h:panelGrid>
        </p:column>  
    
  2. onclickメニューをトリガーする panelGrid に属性を追加します

        <p:column id="model">  
           <f:facet name="header">  
              Model  
           </f:facet> 
           <h:panelGrid onclick="dialog.show()"> 
              <h:outputText value="#{car.model}" />  
           </h:panelGrid>
        </p:column>  
    

    dialogは、 と同じページに表示されるダイアログ ボックスを指しますwidgetVar="dialog"。関心のあるすべてのセルに対してこれを繰り返すことができます

于 2013-10-03T05:06:02.910 に答える