2017-03-24 1 views
0

저는 작업 관리자로 구성된 응용 프로그램을 만들고 있습니다.datatable 프라임 부분 업데이트

받은 편지함 목록에서만 3 개의 목록 (받은 편지함, 오늘 및 주)이 카테고리없이 표시되며 다른 두 개의보기에는 오늘 및 주간 카테고리가 있거나없는 카테고리가 나타납니다.

3 가지 목록에서 하나의 작업 범주를 변경할 수 있기를 원합니다. 따라서 범주가 없어야하는받은 편지함 작업의 범주를 변경하면 전체 테이블을 업데이트해야하며 목록에서 작업을 제거해야합니다.

프로그램을 디버깅하고 작업이 목록에서 올바르게 제거되지만 범주의 셀만 업데이트되고 전체 테이블은 업데이트되지 않습니다. 페이지를 다시로드하면 작업이 나타나지 않습니다. 누군가가 전체 테이블을 업데이 트하는 방법을 알고 하나의 세포뿐만 아니라? 감사.

<h:form id="formTareas"> 
    <p:dataTable id="tablaTareas" var="tarea" value="#{userBean.tasks}" 
     border="1" selection="#{userBean.selectedTasks}" 
     rowKey="#{tarea.id}" editable="true" editMode="cell" 
     widgetVar="tasksTable" style="text-align: center" paginator="true" 
     rows="8" filteredValue="#{userBean.filteredTasks}"> 

     <p:ajax event="cellEdit" listener="#{userBean.updateTask(tarea)}" 
      process=":formTareas" update=":formTareas:tablaTareas" /> 

     <p:column selectionMode="multiple" 
      style="width:16px;text-align:center" /> 

     <p:column> 
      <f:facet name="header">#{msgs.comentario}</f:facet 
      <h:outputText value="#{tarea.comments}" /> 
     </p:column> 

     <p:column> 
      <f:facet name="header">#{msgs.fechaCreacion}</f:facet> 
      #{userBean.formatDate(tarea.created)} 
     </p:column> 

     <p:column id="columnaPlanned" sortBy="#{tarea.planned}"> 
      <f:facet name="header">#{msgs.fechaPlanificacion}</f:facet> 
      <h:outputText value="#{tarea.planificada}" /> 
     </p:column> 

     <p:column headerText="category"> 
      <p:cellEditor> 
       <f:facet name="output"> 
        <h:outputText 
         style="color : #{tarea.isRetarded() ? 'red' : 'black'};" 
         value="#{userBean.getCategoryName(tarea)}" /> 
       </f:facet> 
       <f:facet name="input"> 
        <h:selectOneMenu value="#{tarea.categoryId}" style="width:96%"> 
         <f:selectItem itemLabel="Inbox" itemValue="" /> 
         <f:selectItems value="#{userBean.categories}" var="c" 
          itemValue="#{c.id}" itemLabel="#{c.name}" /> 
        </h:selectOneMenu> 
       </f:facet> 
      </p:cellEditor> 

     </p:column> 
    </p:dataTable> 
</h:form> 
+0

변경 사항이 열 뿐인 경우 왜 전체 데이터 테이블을 업데이트 하시겠습니까? –

+0

@BillyHope 그 행을 업데이트하면 목록의 해당 항목이 제거됩니다 (범주! = null 인 경우 항목이 다른 목록에 나타나야 함). – ronce96

+0

@BillyHope 나 자신을 더 잘 설명하기 위해 설명을 편집했습니다. – ronce96

답변

0

난 그냥 내 질문에 대한 답을 발견했다 : 여기

내 데이터 테이블의 코드 (수정 셀은 "카테고리"헤더 마지막입니다). 이 줄을 추가하면 전체 dataTable이 업데이트됩니다.

<p:remoteCommand name="onCellEdit" update=":formTareas:tablaTareas" /> 
<p:dataTable id="tablaTareas" ........> 
    <p:ajax event="cellEdit" listener="#{userBean.updateTask(tarea)}" 
     oncomplete="onCellEdit()" /> 

이것은 제대로 작동합니다.