1

ダイアログを使用して DataTable から選択した行のデータを表示する際に、この問題が発生しています。

ここに画像の説明を入力 選択した各行は、ダイアログの最初の一番上の行 (親行) のデータを表示します

ここに画像の説明を入力

他の行を削​​除しても問題ありません。私はこれのために何日も働いてきましたが、まだこれを解決できません。

これがDataTableの私のコードです

<h:form id="tableForm">

        <!-- Account Data Table --> 


        <p:dataTable id="table" var="account" value="#{accountController.accounts}" widgetVar="accountTable" rowKey="#{account.id}" paginator="true" rows="15"
                     paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}" selection="#{accountController.account}"
                     paginatorPosition="bottom" lazy="true">  


            <p:column selectionMode="single" style="width:18px" />

            <p:column headerText="Lastname" sortBy="#{account.marketingPerson.lastName}">  
                <h:outputText value="#{account.marketingPerson.lastName}" />  
            </p:column>  

            <p:column headerText="Firstname" sortBy="#{account.marketingPerson.firstName}">  
                <h:outputText value="#{account.marketingPerson.firstName}" />  
            </p:column> 

            <p:column headerText="Middlename" sortBy="#{account.marketingPerson.middleName}">  
                <h:outputText value="#{account.marketingPerson.middleName}" />  
            </p:column> 

            <p:column headerText="Position">  
                <h:outputText value="#{account.marketingPerson.position}" />  
            </p:column>   

            <f:facet name="footer">

                <!-- View Button -->
                <p:commandButton value="View" oncomplete="view.show()" icon="view-icon" >

                    <f:setPropertyActionListener target="#{accountController.account}" value="#{account}"/>

                </p:commandButton>

                <!-- Edit Button -->
                <p:commandButton  value="Edit" onclick="view.show()" icon="edit-icon">

                </p:commandButton>

                <!-- Delete Button -->
                <p:commandButton value="Delete" onclick="cd.show()" icon="delete-icon" >
                    <f:setPropertyActionListener target="#{accountController.account}" value="#{account}" />
                </p:commandButton>
            </f:facet>     

        </p:dataTable> 

        <!-- Confirmation -->
        <p:confirmDialog 
            header="Delete Action Confirmation" severity="alert"
            widgetVar="cd">

            <f:facet name="message">
                <h:outputText value="Are you sure?" />
            </f:facet>

            <p:commandButton value="Yes" actionListener="#{accountController.delete}" update="table"
                             oncomplete="cd.hide()">
                <f:ajax render="table" />
            </p:commandButton>

            <p:commandButton value="No" onclick="cd.hide()" type="button" />
        </p:confirmDialog>
    </h:form>

アカウント ダイアログを表示

<p:dialog header="View Account" widgetVar="view" resizable="false" id="viewDlg" draggable="false" >         
        <h:form id="viewForm">
            <p:panelGrid id="display" columns="2" style="margin:0 auto;">

                <f:facet name="header">
                    <p> <h:graphicImage value="resources/images/icons-button/search_business_user.png" />
                        #{account.marketingPerson.lastName}, #{account.marketingPerson.firstName} #{account.marketingPerson.middleName}
                    </p>
                </f:facet>

                <p:outputLabel value="ID Number:" />
                <p:outputLabel value="#{account.marketingPerson.idNumber}" />

                <p:outputLabel value="Birth Date:" />
                <p:outputLabel value="#{account.marketingPerson.birthDate}" />

                <p:outputLabel value="Telephone Number:" />
                <p:outputLabel value="#{account.marketingPerson.telNumber}" />

                <p:outputLabel value="Mobile Number:" />
                <p:outputLabel value="#{account.marketingPerson.mobileNumber}" />

                <p:outputLabel value="Email Address:" />
                <p:outputLabel value="#{account.marketingPerson.emailAddress}" />

                <f:facet name="footer">
                    <p:commandButton type="button" value="Edit" />
                </f:facet>
            </p:panelGrid>
        </h:form>
    </p:dialog>
4

2 に答える 2

1

DataTable で使用p:ajaxして、Table からデータを選択するたびに ManagedBean の値を更新します。
そして、属性を使用して、新しく選択した値でupdate再レンダリングp:panelGridします。p:dialog

<p:ajax event="rowSelect" update=":viewForm:display" /> 
于 2013-09-22T08:21:36.123 に答える
0

Faces Converterを使用してこれを解決しました

于 2013-09-25T16:04:26.663 に答える