2012-08-06 134 views
1

以下是我的数据表图片,我想当我删除一行,数据表刷新。但是从数据库中删除的行却没有从数据表中删除。 enter image description here 我尝试下面的代码,但他们不能帮助我。p:dataTable - 删除行后刷新数据表

<h2>مشاهده اطلاعات پرسنل</h2> 
<h:form id="f2" prependId="false"> 

    <p:dataTable id="pdataTable" var="personel" value="#{personelMB.personelList}" rowKey="#{personelMB.personel_id}" 
    > 

     <f:facet name="header"> 
      اطلاعات پرسنل 
     </f:facet> 

     <p:column> 
      <f:facet name="header"> 
       شماره پرسنلی 
      </f:facet> 

      <h:outputText value="#{personel.personel_id}" /> 

      <f:facet name="footer"> 
       کدملی 
      </f:facet> 
     </p:column> 

     <p:column headerText="نام"> 
      <h:outputText value="#{personel.pname}" /> 
     </p:column> 

     <p:column headerText="نام خانوادگی"> 
      <h:outputText value="#{personel.pfamily}" /> 
     </p:column> 

     <p:column headerText="آدرس"> 
      <h:outputText value="#{personel.paddress}" /> 
     </p:column> 
    <p:column headerText="تلفن"> 
      <h:outputText value="#{personel.pphone}" /> 
     </p:column> 
     <p:column> 
     <f:facet name="حذف"> 
     <h:outputText value="" /> 
     </f:facet> 
     <p:commandButton icon="ui-icon-close" title="حذف" 
         actionListener="#{personelMB.deletePersonel(personel.personel_id)}" update="pdataTable"/> 
    </p:column> 
     <f:facet name="footer"> 
      تعداد رکورد#{fn:length(personelMB.getPersonelList())} میباشد. 
     </f:facet> 

    </p:dataTable> 

</h:form> 

2.second尝试:

<p:commandButton icon="ui-icon-close" title="حذف" 
actionListener="#{personelMB.deletePersonel(personel.personel_id)}" reRender="pdataTable"/> 
        </p:column> 

3.third尝试: personelBean.java

public void deletePersonel(int personel_id){ 
     Personel personel=(Personel)personelservice.getPersonelId(personel_id); 
     getPersonelservice().deletePersonel(personel); 
    } 
    public String deleteAction(Personel personel) { 
     personelList.remove(personel); 
     return null; 
     } 

XHTML文件

<p:commandButton icon="ui-icon-close" title="حذف" 
         actionListener="#{personelMB.deletePersonel(personel.personel_id)}" action="#{personelMB.deleteAction(personel)}"/> 
    </p:column> 

请帮助我。

+0

检查您的bean是否是ViewScoped。 – 2012-08-06 14:45:10

+0

我使用了@SessionScoped。我将其更改为ViewScoped,但它不起作用。 – samira 2012-08-06 15:01:36

+0

你确定操作方法正在运行吗?我的意思是,您是否调试过或发布了日志跟踪,以确定该方法是否已被执行?这可能是Java问题而不是JSF/Primefaces。 – 2012-08-06 15:13:19

回答

5

而是阿贾克斯试图这样是错误的做出是真的。

actionListener="#{personelMB.deletePersonel(personel.personel_id)}" update="@form" ajax="true"/> 
+0

这是解决方案吗? – j0k 2012-08-07 08:51:07

+1

@ j0k,是的,我忘了ajax =“true”。这个对我有用。 – samira 2012-08-07 08:53:32

+0

好的,不要忘了接受你自己的答案,然后;) – j0k 2012-08-07 08:54:01

0

使用更新的命令按钮

+1

我之前使用过它,它也没有工作。 – samira 2012-08-06 14:50:33

0

=“@形式”参数中有你

<p:commandButton update=":f2:pdataTable"></p:commandButton> 
+1

是的,我试过了。但它不能工作。 – samira 2012-08-06 19:29:40