确认ConfirmDialog后从数据库中删除行

时间:2013-06-18 15:11:04

标签: java xml primefaces javabeans

好的我做了一些搜索,我尝试了许多对我来说似乎不错的方法,但仍然无法工作, 用户在dialog2

中单击确认后,我希望从表'user'中删除一行

所以我喜欢这个

class afficherUs

@ManagedBean
@ViewScoped
public class afficherUs implements Serializable {
   private String idU;
   private List<Compte> comptes=new ArrayList<Compte>();

   private Compte selectedc = new Compte();

   private DataModel tdata ;

    public afficherUs() {

          }
  // getter and setter 

   public void delete(){   <!-- Method to remove -->

    System.out.println("in delete");
    comptes.remove(selectedc);
    tdata.setWrappedData(comptes);

   }
   public void editU(){
 Session se=geoUtil.getSessionFactory().getCurrentSession();
        Transaction tr=se.beginTransaction();
        Compte cp=new Compte();
        cp=selectedc;
        se.merge(cp);

        tr.commit();
        int i=0;
        boolean ok=false;
        while(i<comptes.size() && true==false){
            if(comptes.get(i).getId().equals(cp.getId())){
               ok=true;
               comptes.remove(i);
               comptes.add(i, cp);
            }
            i++;
        }
     tdata.setWrappedData(comptes);
   }
}

和dialog2:

<!-- Suppression Form -->
    <h:form id="supprimer">           

      <p:dialog header="Suppression" widgetVar="dialog2" resizable="false"
              width="300" showEffect="explode" hideEffect="explode">

        <h:panelGrid id="dis" columns="2" cellpadding="4">
            <h:outputText value="Valider Suppression"  style="color:#930303;" ></h:outputText><h:outputText value="#{afficherUs.selectedc.id}" ></h:outputText>

            <p:commandButton value="Supprimer" action="#{afficherUs.delete}" update=":f:form:ila" oncomplete="dialog2.hide()" ajax="true"></p:commandButton><p:commandButton value="Annuler" oncomplete="dialog2.hide()"></p:commandButton>

        </h:panelGrid>
    </p:dialog> 
    </h:form> 

我在cammandbutton上调用方法点击了我的DataTable

 <p:column style="width:4%">  
       <p:commandButton id="supprimerButton" update=":f:form:supprimer:dis" oncomplete="dialog2.show()" icon="ui-icon-trash" title="View">  
                <f:setPropertyActionListener value="#{cmd}" target="#{afficherUs.selectedc}" />
        </p:commandButton> 
 </p:column> 

1 个答案:

答案 0 :(得分:0)

首先:创建具有属性selectionMode selection rowKey的表,其中selection - 您保存所选行的bean的属性。 例如:

<p:dataTable id="ila" var="cmd" value="#{afficherUs.tdata}" paginator="true" 
rowkey="#{cmd.id}" rows="6" widgetVar="ChefTable" selection="#{afficherUs.selected}">

第二个:创建按钮,它将显示删除对话框并更新其中的信息。 例如:

<p:commandButton id="delButton" value="Delete" update=":f:form:supprimer"
                                                 action="dialog2.show()"/>

第三步:使用按钮编写对话框,更新表格中的信息。 例如:

<p:commandButton value="Yes" actionListener="#{afficherUs.delete}"
                        update=":f:form:ila" oncomplete="delApp.hide()"/>

第四:在您的managedbean中从您的ArrayList中删除selected 例如:

public void delete(){ 
    System.out.println("in delete");
    comptes.remove(selected);
    //Some code here
   }