2011-12-19 2 views
1

Я использую PF 3.0RC1 с JSF 2.0.Обновить Datatable после удаления строки

У меня есть datatable, и на каждой строке у меня есть кнопка удаления. Как только я нажму на удаление, соответствующая строка удаляется из db, но данные не обновляются. Он по-прежнему показывает старый набор строк. Как я могу получить обновляемый datatable для обновления?

Вот код

<h:form id="form"> 
    <p:dataTable value="#{myController.displayList}" var="item" id="tbl"> 
     <p:column> 
     <p:commandButton image="icon icon-delete" 
          id="del" action="#{myController.del}" 
          update="@form">  
      <f:setPropertyActionListener value="#{item}" 
       target="#{myController.selected}" for="del"/> 
     </p:commandButton> 
     </p:column> 
    </p:dataTable> 
    </h:form> 

DisplayList является

private List<Image> displayList = new ArrayList<Image>(); 

public List<Image> getDisplayList() { 
     Student std = (Student) getSelected; 
     displayList = this.ejbFacade.getImages(std.getId()); // this method gets the list of images which has status = 1 
     return displayList; 
} 

public void setDisplayList(List<Image> displayList) { 
    this.displayList = displayList; 
} 

// это дель метод, который устанавливает флаг для изображения на 0 (при дель нажатии значка из поля зрения) public void del() { selected.setActiveStatus (0); MyController myController = (MyController) facesContext.getApplication(). GetELResolver(). getValue (facesContext.getELContext(), null, "myController");
displayList.clear(); myController.getFacade(). Edit (selected); }

+0

ли вы использовать кэш на пул соединений (например, свободного городского ДБХП)? Наверное, проблема есть. – AValchev

ответ

2

Я уверен, что вы удаляете строку из базы данных, но dataTable records list не обновляется/обновляется. Обновите список записей, удалив удаленную запись из списка или пополнив список данными из БД (хотя это будет немного ресурсоемким). Показать код java!

PS: Также поздравления вы попросили тысячных primefaces вопрос! :) Так что я в вашем распоряжении ...

+0

Я пытаюсь установить флаг на 0, чтобы изображения не отображались в datatable. В методе del я устанавливаю флаг в 0 и в datatable query я получаю изображения с активным = 1. Вот метод del 'public void del() { selected.setActiveStatus (false); FacesContext facesContext = FacesContext.getCurrentInstance(); MyController myController = (MyController) facesContext.getApplication(). GetELResolver(). getValue (facesContext.getELContext(), null, "myController"); myController.getFacade(). Edit (selected); } ' – goodprg

+0

@ user1097366 Пожалуйста, разместите код, отредактировав свой вопрос, точно так же, как вы поместили код xhtml ...Также я не понимаю, что с этим флагом, опубликуем метод 'displayList' – spauny

+0

Я обновил свой Q в соответствии с вашим предложением. Пожалуйста посоветуй. – goodprg

0

если DisplayList список, содержащий значения из таблицы

затем

в методе удаления вам нужно сделать

«установить идентификатор удаленной строки в переменную индекса»

, а затем сделать:

displayList.remove(index); 

, а затем удалить строку из БД

Также попробуйте добавить process="@this" к CommandButton

Смежные вопросы