当我点击任意一行并单击删除链接时,会出现确认对话框,但是一旦我单击对话框,行选择就会发生变化。所选内容不会被删除,但是其他一些行会被删除。请单击帮助解决它。
<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>
答案 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方法时,此属性包含属于表中所选行的实体。