添加对话框时,行选择会更改

时间:2012-07-12 12:06:01

标签: jsf primefaces

当我点击任意一行并单击删除链接时,会出现确认对话框,但是一旦我单击对话框,行选择就会发生变化。所选内容不会被删除,但是其他一些行会被删除。请单击帮助解决它。

<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>

1 个答案:

答案 0 :(得分:0)

对话框必须在表格之外。此外,在删除按钮中,您正在更新组件“:studyPlanEditForm:display”。我在片段中没有看到该组件。对话框中的面板应该有id =“display”,因为对话框需要更新。

您可以在primefaces showcase中看到类似用法casi的工作示例。您只需替换显示确认消息内容的对话框,并添加删除该行的按钮。托管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方法时,此属性包含属于表中所选行的实体。