2012-08-06 7 views
1

suivant est mon pic de tableau de données et je veux quand je supprime une ligne, la table de données rafraîchit. mais la ligne est supprimée de la base de données mais ne supprime pas de la table de données après cela. enter image description here J'ai essayé les codes suivants mais ils n'ont pas pu m'aider.p: dataTable - rafraîchir datatable après suppression ligne

<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.Deuxième essayer:

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

3.Troisième essayer: 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; 
     } 

fichier xhtml

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

s'il vous plaît aidez-moi.

+0

Vérifiez que votre bean est ViewScoped. –

+0

J'ai été utilisé @SessionScoped. Je l'ai changé pour ViewScoped mais cela n'a pas fonctionné aussi. – samira

+0

Etes-vous sûr que la méthode d'action est en cours d'exécution? Je veux dire, avez-vous débogué ou publié des traces de journaux pour voir que la méthode a effectivement été exécutée? Ce pourrait être un problème de Java au lieu de JSF/Primefaces. –

Répondre

5

Au lieu de ajax être faux pas vrai.

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

Est-ce la solution? – j0k

+1

@ j0k, oui, j'ai oublié ajax = "vrai". ça marche pour moi. – samira

+0

Très bien, n'oubliez pas d'accepter votre propre réponse alors;) – j0k

0

update = utilisation du paramètre "form @" sur commandbutton

+1

Je l'ai déjà utilisé, ça n'a pas marché aussi. – samira

0

Avez-vous essayé comme ça dans

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

oui, je l'ai essayé. mais ça ne pouvait pas marcher aussi. – samira

Questions connexes