2010-12-29 2 views
2

명령 단추 또는 명령 링크의 동작 이벤트와 새로 추가 된 행에 대해 관련된 서버 측 컬렉션에 새 행을 추가 할 수 있습니다 전체 테이블이으로 다시 렌더링되면 클라이언트 에 표시 될 수 있습니다.Richfaces 데이터 테이블 - 클라이언트 측에서 전체 데이터 테이블을 다시 렌더링하지 않고 새 행 추가

그것을 사용하여, 전체 데이터 테이블를 새로 고침 할 필요없이 클라이언트 측 에 새로 추가 된 행을 표시 할 수있는 부분 AjaxKeys 또는 무언가의 도움으로, 렌더링? 어떤 도움 :)

답변

1

에 미리

덕분에 당신은 당신이 새 행을 추가하는 경우 전체 데이터 테이블을 다시 쓰게해야합니다. Ajax 키는 기존 열을 다시 렌더링하려는 경우 유용 할 수 있습니다.

+0

내 XHTML 페이지를 참조하십시오. 행을 추가/제거하려면 전체 테이블을 다시 렌더링해야합니다. –

0

귀하의 질문에 대한 답변을 알고 싶습니다. 전통적인 자바 스크립트를 사용하면 그 효과를 얻을 수 있지만 리치를 사용할 때는 클라이언트에 새 행을 추가 할 수 없습니다.

그러나 나는 서버 함수에 대한 ajax 호출을 사용하여이 함수가 새로운 빈 행을 dataTable List에 추가하고 rich : datatable을 다시 렌더링했습니다.

<rich:column> 
<f:facet name="header"><h:outputLabel value="#{msgs.notes}" style="font-size:15px;"/> </f:facet> 
<h:inputText value="#{line.notes}" > 
    <a4j:ajax event="blur" 
    execute="datatable" 
    render="datatable" 
    immediate="true" 
    listener="#{saleBacking.addNewLineInDataTable}" 
    oncomplete="document.getElementById('myform:datatable:#{saleBacking.view_no_counter-1}:line').focus();"/> 
</h:inputText> 
</rich:column> 

및 올바른 년대 maneged 콩

public void addNewLineInDataTable(AjaxBehaviorEvent event) 
    { 
     SaleLine saleLine = new SaleLine(); 
     saleLine.setId(salesLineslist.isEmpty() ? 1 : salesLineslist.get(salesLineslist.size() - 1).getId() + 1); 
     salesLineslist.add(saleLine); 
     saleLine = new SaleLine(); 
     saleLine = new SaleLine(); 
     saleLine.setSaleId(sale); 
     saleLine.setViewNo(++view_no_counter); 
     saleLine.setDiscount(0d); 
     saleLine.setItemPrice(0d); 
     salesLines.add(saleLine); 
    }