0

いずれかの行をクリックして削除リンクをクリックすると、確認ダイアログ ボックスが表示されますが、ダイアログ ボックスをクリックすると、行の選択が変更されます。選択した行は削除されませんが、他の行は削除されます。

<p:column headerText="Delete" width="50" style="text-align:center">
            <p:commandLink id="showDialogButton"
                update=":studyPlanEditForm:display" onclick="cdDialog.show()"
                value="delete">
            </p:commandLink>
            <p:dialog widgetVar="cdDialog" appendToBody="true"
                header="Are you sure to delete this substudyplan?">
                <p:panel>
                <p:commandButton value="Yes" process=":studyPlanEditForm:display" 
                    action="#{editBean.deleteSubStudyPlan(selectedRow)}"
                    onclick="cdDialog.hide();"
                    update=":studyPlanEditForm"/>
                <p:commandButton value="No" onclick="cdDialog.hide();"
                     type="button"/>
                </p:panel>
            </p:dialog>
        </p:column>
4

1 に答える 1

0

ダイアログはテーブルの外にある必要があります。また、削除ボタンでは、コンポーネント「:studyPlanEditForm:display」を更新しています。スニペットにそのコンポーネントが表示されません。ダイアログを更新する必要があるため、ダイアログ内のパネルには id="display" が必要です。

同様の使用法の実際の例は、primefacesショーケースで確認できます。確認メッセージの内容を表示するダイアログを置き換え、行を削除するボタンを追加するだけです。マネージド Bean には、選択された行への参照がすでにあります。

これは、削除ボタンがどのように見えるかです

<p:column headerText="Delete" width="50" style="text-align:center">
    <p:commandButton id="showDialogButton"
             update=":studyPlanEditForm:display" onclick="cdDialog.show()"
             value="delete">
        <f:setPropertyActionListener value="#{selectedRow}" target="#{bean.selectedRow}" />
      </p:commandButton>
</p:column>

そして、これはダイアログです(テーブルの外にある必要があります):

<p:dialog widgetVar="cdDialog" appendToBody="true"
          header="Are you sure to delete this substudyplan?">
    <p:panel id="display">
        <p:commandButton value="Yes" process="@this" 
                action="#{editBean.deleteSubStudyPlan}"
                onclick="cdDialog.hide();"
                update=":studyPlanEditForm"/>
        <p:commandButton value="No" onclick="cdDialog.hide();"
                 type="button"/>
    </p:panel>
</p:dialog>

そのため、マネージド Bean にselectedRowは呼び出された属性があり、メソッド deleteSubStudyPlan が呼び出された時点で、この属性にはテーブル内の選択された行に属するエンティティが含まれます。

于 2012-07-12T15:06:31.553 に答える