0

好的,我做了一些搜索,我尝试了很多对我来说似乎不错但仍然不起作用的方法,我希望在用户单击对话框 2 中的确认后从表“用户”中删除一行

所以我喜欢这个

班主任我们

@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);
   }
}

和对话框2:

<!-- 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> 
4

1 回答 1

0

首先:创建具有属性的表selectionMode selection rowKeywhere 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 中selected从您的 ArrayList 示例中删除:

public void delete(){ 
    System.out.println("in delete");
    comptes.remove(selected);
    //Some code here
   }
于 2013-06-18T15:56:14.007 回答