删除行后,数据表不会更新

时间:2013-11-17 23:00:23

标签: jsf primefaces datatable

我有一个使用primefaces库的数据表,虽然我有所有的功能工作,我只有一个小问题,当我按下命令链接删除行,它工作,行被删除,但它没有自动更新数据表以反映这一点,理想情况下我想要的是当用户按下删除按钮时它自动更新数据表以显示此信息,我该如何实现?

这是数据表

                        <p:dataTable id="UserTable"
                                     widgetVar="usersTable" 
                                     value="#{userdetailsController.items}"
                                     var="item"
                                     emptyMessage="No details was found with given criteria">
                            <!--filteredValue="{userdetailsController.filteredUsers}" -->

                            <f:facet name="header">  
                                <p:outputPanel>  
                                    <h:outputText value="Search all fields: " />  
                                    <p:inputText id="globalFilter" onkeyup="usersTable.filter()" style="width:150px" />  
                                </p:outputPanel>  
                            </f:facet>

                            <p:column id="USERID" filterBy="id"   
                                      headerText="i.d."  
                                      filterMatchMode="contains">
                                <f:facet name="header">
                                    <h:outputText value="#{bundle.ListUserdetailsTitle_id}"/>
                                </f:facet>
                                <h:outputText value="#{item.id}"/>
                            </p:column>

                            <!--There are four different match modes, "startsWith"(default), "endsWith", "contains" and "exact"-->
                            <p:column id="USERNAME" filterBy="username"   
                                      headerText="username."   
                                      filterMatchMode="contains">
                                <f:facet name="header">
                                    <h:outputText value="#{bundle.ListUserdetailsTitle_username}"/>
                                </f:facet>
                                <h:outputText value="#{item.username}"/>
                            </p:column>

                            <p:column>
                                <f:facet name="header">
                                    <h:outputText value="&nbsp;"/>
                                </f:facet>
                                <p:commandLink action="#{userdetailsController.prepareView}" value="#{bundle.ListUserdetailsViewLink}"/>
                                <h:outputText value=" "/>
                                <div class="divider"/>
                                <p:commandLink action="#{userdetailsController.prepareEdit}" value="#{bundle.ListUserdetailsEditLink}"/>
                                <h:outputText value=" "/>
                                <div class="divider"/>
                                <p:commandLink action="#{userdetailsController.destroy}" value="#{bundle.ListUserdetailsDestroyLink}"/>
                            </p:column>
                        </p:dataTable>

2 个答案:

答案 0 :(得分:2)

您需要使用p:commandLink的update属性来告诉PF您想要执行ajax请求以获取与表UserTable相关的所有数据,如下所示:

            <p:commandLink actionListener="#{userdetailsController.destroy}" value="#{bundle.ListUserdetailsDestroyLink}" ajax="true" update="UserTable"/>

确保在action atrib之前调用actionListener。这里有一个更详细的例子 http://www.primefaces.org/showcase/ui/commandLink.jsf

答案 1 :(得分:0)

根据documentation,您需要在删除行后调用Draw()。

var table = $('#example').DataTable();

$('#example tbody').on( 'click', 'img.icon-delete', function () {
    table
        .row( $(this).parents('tr') )
        .remove()
        .draw();
} );