【问题标题】:Dynamically adding a row to primefaces dataTable向primefaces dataTable动态添加一行
【发布时间】:2012-03-05 05:21:27
【问题描述】:

我需要在单击按钮时向我的数据表中添加一行 - “Add Employee”。

数据表显示 bean 中固定的员工列表对应的记录。

我正在做的是,点击“Add Employee”按钮,我在empList中添加了一条Employee的空记录。

有没有更好的方法来做到这一点?

谢谢。

【问题讨论】:

  • 点击“添加员工”按钮,接受用户在各个领域的输入。提交时,将详细信息添加到 bean 中的列表并在数据表上执行 ajax 更新。数据表将根据 bean 中的员工列表进行刷新。
  • @rags 是否可以不刷新数据表?
  • 需要 ajax 更新,因为新的详细信息已添加到列表中并在 bean 中可用

标签: jsf primefaces


【解决方案1】:

在单击添加按钮时打开对话框或弹出窗口。然后填写必填字段(附加到员工对象。保存/提交时,将该对象添加到员工对象列表中。并重新呈现数据表。 或者,您最初可以将一个空的员工对象添加到您的列表中。在带有输入字段的数据表中显示它。添加时,您将新员工添加到列表中并重新呈现列表。

【讨论】:

【解决方案2】:

list_Recs 是记录列表,显示在数据表中。

<p:dataTable id="myTable" value="#{myBean.list_Recs}" selectionMode="single" var="myTableVar" selection="#{myBean.currentRec}">
    <p:ajax event="rowSelect" listener="#{myBean.handleRowSelect}" update=":myForm:myPanel"/>
    <p:column>
        <f:facet name="header">
            <h:outputLabel value="Field 1" />
        </f:facet>
        <h:outputLabel value="#{myTableVar.Field1}"/>
     </p:column>

     <p:column>
         <f:facet name="header">
             <h:outputLabel value="Field 2" />
         </f:facet>
         <h:outputLabel value="#{myTableVar.Field2}" />
     </p:column>

     <f:facet name="footer">
         <p:commandButton value="New" action="#{myBean.prepareForInsert}" update=":myForm:myPanel"/>
     </f:facet>
</p:dataTable>

<h:panelGrid id="myPanel" columns="2" >
    <h:outputLabel value="Field 1"/>
    <p:inputText id="fld1" value="#{myBean.newRec.field1}" />
    <h:outputLabel value="Field 2"/>
    <p:inputText id="fld2" value="#{myBean.newRec.field2}" />
    <p:commandButton action="#{myBean.createAction}" value="Submit" update="myGrowl myTable" />
</h:panelGrid>

当点击New按钮时,在myBean的prepareForInsert例程中创建一个newRec的emty实例。这样 myPanel 在字段中填充空白。在提交时,将 newRec 添加到 list_Recs 并且新记录显示在数据表中,因为 myTable 上的更新。 希望这会有所帮助。

【讨论】:

  • 嗨,代码非常好。非常感谢您的努力。但是,我不能包含一个新面板。要求是在数据表的末尾添加一个空白行。如果我在后端添加一条空记录,我需要刷新数据表。如果我刷新数据表,我将丢失所有错误消息等。
  • Rags,你能发布你的 bean 代码的一部分吗?我很感兴趣,因为我需要同样的东西,但是在我的列表中添加一行时出现错误。以下错误:启用选择时,DataModel 必须实现 org.primefaces.model.SelectableDataModel。自从我从 PF2 升级到 primefaces 3.2 后,我只有这个错误
  • @roel,你能用 xhtml 和 bean 的代码片段提出另一个问题
【解决方案3】:

另一种选择是在数据表的页脚方面显示一个空员工,如果用户单击添加按钮,则将其添加到您的列表中。有了这个,您可以确保只有正确填写的员工对象/实体被添加到您的列表中。

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 2012-06-29
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2012-12-08
    • 2012-01-03
    相关资源
    最近更新 更多