当前位置: 首页 > 知识库问答 >
问题:

Primefaces datatable单元格编辑不更新

郗河
2023-03-14

我有一个带有单元格编辑的primefaces datatable,它可以在视图中的一个布尔变量上切换。

我有三个问题:

  1. 在编辑模式下,我更改了一个值,然后单击页面上的“保存”按钮,它不会保留新值,如果我先单击页面上的任何其他位置,然后单击“保存”,它将保留该值。如果您先单击“保存”,我需要它来保留值。
  2. 如果我编辑了一个输入文本的单元格,然后我单击了它,那么该字段现在就是一个输出文本,直到我再次单击它。在编辑模式下,我希望字段看起来像输入文本。
  3. 当单击save按钮时,备份方法将可编辑布尔值设置为false,页面的其余部分将服从,并且dataTable看起来是服从的,但如果单击单元格,它将允许您编辑它。

代码如下:

<p:dataTable value="#{view.LineItems}" var="lineItem" rowKey="#{lineItem.lineItemId}"
                 resizableColumns="false" editable="#{view.editable}" editMode="cell"
                 editingRow="#{view.editable}" id="requestLineItemsTable">

        <p:ajax event="cellEdit" listener="#{view.cellEdited}" immediate="true" update="@this" />

        <p:column styleClass="centerColumnData" headerText="Item Name" style="width: 140px;">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{lineItem.title}"/>
                </f:facet>
                <f:facet name="input">
                    <h:inputText value="#{lineItem.title}"/>
                </f:facet>
            </p:cellEditor>
        </p:column> ...

这是后端(还没有用它做任何事情)

public void cellEdited(CellEditEvent event)
{
    Object oldValue = event.getOldValue();
}
 <p:commandLink process="@this"
                       action="#{view.changeModeToEdit}"
                       update="@form"
                       rendered="#{!view.editMode">
            <h:graphicImage library="images" name="edit20.png" title="#{__Common.edit}"
                            style="height: 15px; width: 15px;"/>
        </p:commandLink>
<components:linkWithSpinner linkStyle="margin-right: 20px;" loadingImageStyle="margin-right: 20px;"
                                    linkStyleClass="activeButton saveButtonRequestDetails" loadingImageStyleClass="saveButtonRequestDetails"
                                    linkText="#{__CommonButton.save}"
                                    process="@form" update="@form"
                                    actionMethod="#{view.updateRequest()}"/>

view.updateRequest()将editable设置为false。我正在使用Primefaces 4.0

共有1个答案

常彭薄
2023-03-14

所以我想出了解决这些问题的办法。我的重点是使用内置的编辑表,但您只需要一个普通的datatable,列可以包含输入文本字段。那么你就不必担心我上面问题中的大部分问题了。如果您需要在编辑视图和非编辑视图之间切换,那么我仍然不知道如何完全修复它,除了在文件中有两个带有render标记的DataTable,但是这样您就会复制表一个带有输入文本字段,一个带有输出文本字段,这不是最好的方法。

 类似资料:
  • 我有一个带有单元格编辑功能的数据表,我想通过应用一个不同样式的类来更新数据表以显示修改后的记录。 以下是我的问题: 如果在激发onCellEdit事件时未更新数据表,则记录已正确更新,但无法看到已修改行的applyed style类。 如果在onCellEdit事件激发时更新数据表,并使用return键更新值,则一切正常,并且可以看到修改行的应用样式类。 如果我在单元格编辑事件触发时更新数据表,并

  • 我有一个JTable,它应该是2列(String,JComboBox)。当我初始化表时,一切看起来都很好。只要一个I在表中选择了一个值,JComboBox单元格就会获取所选项的数据类型。 我想保持JCOmboBox在那里,让它触发数据更改事件,表忽略该列中的数据更改,并保持ComboBox填充。 我的表将此作为覆盖

  • 问题内容: 我正在尝试用Java编写程序来管理我的Bookie帐户。我是java的新手,所以我认为我会选择一些简单的方法来了解事情的原理。我决定使用表格视图并使各个单元格可编辑。我一直在关注本教程http://java- buddy.blogspot.co.uk/2012/04/javafx-2-editable-tableview.html 。它详细说明了如何使用Java代码执行此操作,并将其复

  • 问题内容: 我需要在jTable中显示数字,精确到小数点后两位。为此,我创建了一个自定义单元格编辑器,如下所示: 该单元格编辑器非常适合将点用作小数点的英语语言环境。但是在德语语言环境中,它不接受逗号作为小数点的值。请让我知道我的代码中有问题的地方。提前致谢。 编辑:这是我如何使其工作: 问题答案: 使用语言环境来发挥您的优势:

  • 我在这个JTable上有问题。我这样编辑单元格 然后,我按Enter键提交更改。在这里,我希望gui用新的值刷新表。 但它们不显示,只有当我像这样更改选择时它们才显示 这是在TableModel中调用的。

  • 我想要一个有4列的jtable。一列必须是组合框。其他列是字符串。 只要找到问题:在注释语句jcb.seteditable(true)时;,如果我在comboxcell上单击一次,它就会打开这个单元格。但我不知道为什么效果更好。此外,我希望combox可编辑。 我怎么能对其他细胞有同样的行为。 再次您好,我已经更新了代码,以便使-如果我通过重写方法在单元格上单击一次,单元格可以编辑-如果我通过重写