2016-04-28 75 views
0

Hello guys我有更新某些组件的问题,我使用的是JSF,Primefaces 5.3,Hibernate。从其他选项卡内的另一个数据表中更新primefaces数据表内容

我有这个标签包含一个数据表:tab 1和我有这等标签tab 2我想做的事情是,当我在选项卡更改Farmaceutica列,然后单击和保存Cambios我想更新的数据表选项卡1.我可以更新数据库,当我注销并再次登录时,更改就在那里,但是我希望没有注销的更改。

这是我admin.xhtml:

<h:form id="frm"> 
    <p:growl id="growl" life="3500" sticky="false" showDetail="true" /> 
    <div class="navbar color-bar"></div> 
    <div class="container-fluid"> 
     <div class="row"> 
      <div class="col-md-7"> 
       <div class="row"> 
        <div class="col-md-12"> 
         <p:tabView id="tabs"> 
          <p:tab title="Estado asignaciones"> 
           <p:panel id="panelEstado"> 
            <h:form id="formDta"> 
             <p:dataTable 
              value="#{estadoAsignaciones.listaEstadoAsignaciones}" 
              var="data" paginator="true" rowKey="#{data.idAuditor}" 
              rows="10" selectionMode="single" 
              selection="#{estadoAsignaciones.estadoAsignaciones}"> 
              <p:ajax event="rowSelect" 
               listener="#{estadoAsignaciones.onRowSelect()}" 
               onstart="PF('blockUIWidget').show()" 
               oncomplete="PF('overPnl').show()" update="frm" /> 
              <p:column headerText="Auditor"> 
               <h:outputLabel 
                value="#{data.nombreAuditor} #{data.apellidoAuditor}" /> 
              </p:column> 
              <p:column headerText="Farmacéutica"> 
               <h:outputLabel value="#{data.farmaceuticaAsignada}" /> 
              </p:column> 
              <p:column headerText="Progreso"> 
               <p:progressBar value="#{data.porcentaje}" 
                labelTemplate="{value}%" id="avanceBar" style="width:80%" /> 
              </p:column> 
             </p:dataTable> 
            </h:form> 
           </p:panel> 
           <p:overlayPanel id="panelOver" widgetVar="overPnl" 
            showEffect="fade" hideEffect="fade" dismissable="false" 
            showCloseIcon="true"> 
            <p:panel id="avance" header="Avance auditoria" 
             class="space robotome"> 
             <p:progressBar id="avanceBar" 
              value="#{estadoAsignaciones.porcentajeValue}" 
              style="width:100%" labelTemplate="{value}%" /> 
            </p:panel> 
            <p:panel id="tiempo" header="Tiempo" class="space robotome"> 
             <h:outputLabel 
              value="Fecha inicio: #{estadoAsignaciones.fecha}" /> 
             <br /> 
             <h:outputLabel 
              value="Fecha Actual: #{estadoAsignaciones.fechaActual}" /> 
             <br /> 
             <h:outputLabel 
              value="Hora inicio: #{estadoAsignaciones.hora}" /> 
             <br /> 
             <h:outputLabel 
              value="Tiempo transcurrido: #{estadoAsignaciones.calHoraDif} horas" /> 
            </p:panel> 
            <p:panel id="auditor" header="Auditor" class="robotome"> 
             <p:outputLabel 
              value="Nombres: #{estadoAsignaciones.getEstadoAsignaciones().nombreAuditor}" /> 
             <br /> 
             <p:outputLabel 
              value="Apellidos: #{estadoAsignaciones.getEstadoAsignaciones().apellidoAuditor}" /> 
            </p:panel> 
           </p:overlayPanel> 
           <p:blockUI block="frm" widgetVar="blockUIWidget"> 
            <p:graphicImage name="imgs/loading.gif" width="50" height="50" /> 
           </p:blockUI> 
          </p:tab> 
          <p:tab title="Asignaciones"> 
           <p:dataTable id="dtA" 
            value="#{asignacionesBean.seleccionAuditores}" var="auditor" 
            paginator="true" rows="5"> 
            <p:column headerText="Auditor"> 
             <h:outputText value="#{auditor.nombreAuditor}" /> 
            </p:column> 
            <p:column headerText="Farmaceutica"> 
             <p:selectOneMenu value="#{auditor.idFarmaceutica}"> 
              <f:selectItem itemLabel="#{data.farmaceutica}" 
               noSelectionOption="true" itemDisabled="true" itemValue="" /> 
              <f:selectItems 
               value="#{asignacionesBean.mapSeleccionFarmaceuticas}" /> 
             </p:selectOneMenu> 
            </p:column> 
            <p:column> 
             <p:commandButton value="Guardar cambios" update=":frm" 
              actionListener="#{asignacionesBean.guardarRespuestaAsignaciones(auditor)}" 
              process="@this" 
              onclick="PF('blockUIWidgetAsignaciones').hide()" 
              onsuccess="PF('blockUIWidgetAsignaciones').show()" /> 
            </p:column> 
           </p:dataTable> 

我感谢你的帮助。

+0

你另一种形式的内部形成首先是不允许这样纠正接下来这个问题,如果我得到它的权利,那么你要更新的第一个选项卡,而要第二个选项卡是吗? – techipank

回答

0

我不明白你为什么使用表单内部的形式。删除除主要表单之外的所有表单。

在您的第一个选项卡中,将id添加到您的数据表中。并将prependId=false放到您的面板网格中,如下所示。

然后在选项卡2改变代码Farmaceutica柱像下面

<p:selectOneMenu value="#{auditor.idFarmaceutica}"> 
<f:selectItem itemLabel="#{data.farmaceutica}" noSelectionOption="true" itemDisabled="true" itemValue="" /> 
<f:selectItems value="#{asignacionesBean.mapSeleccionFarmaceuticas}" /> 
<p:ajax event="valueChange" update=":firstTable"/> 
</p:selectOneMenu> 

在和保存Cambios更改您的代码这一点。

<p:commandButton value="Guardar cambios" update=":firstTable" actionListener="#{asignacionesBean.guardarRespuestaAsignaciones(auditor)}" process="@this" 
onclick="PF('blockUIWidgetAsignaciones').hide()" onsuccess="PF('blockUIWidgetAsignaciones').show()" /> 
+1

使用'prependId = false'是一个不好的建议。见http://stackoverflow.com/questions/7415230/uiform-with-prependid-false-breaks-fajax-render – Kukeltje

相关问题