Pergunta

Eu tenho um botão em um xpage que cria um documento e atualiza um controle de repetição.Tudo está funcionando bem, exceto que o controle de repetição mostra o documento recém-adicionado no topo da tabela (IMG1).

Mas depois de atualizar o xpage novamente, o controle de repetição renderiza a tabela corretamente (IMG2)

Repetir código

<xp:panel>
  <xp:table style="width:100.0%">
    <xp:tr>
      <xp:td style="font-weight:bold">
        Hardware
      </xp:td>
      <xp:td style="font-weight:bold">
        Quantity
      </xp:td>
      <xp:td style="font-weight:bold">
        Asset Tag No
      </xp:td>
      <xp:td style="font-weight:bold">
        Previous User
      </xp:td>
      <xp:td>
      </xp:td>
    </xp:tr>
    <xp:repeat id="rpHardware" rows="30" var="clHardwares">
      <xp:this.value>
        <![CDATA[#{javascript:var docMain:NotesDocument = compositeData.docOnboarding.getDocument();
var vwApp:NotesView = database.getView("lkupHardwaresByParentID");
vwApp.getAllDocumentsByKey(docMain.getUniversalID(),true)}]]>
      </xp:this.value>
      <xp:tr>
        <xp:td>
          <xp:text escape="true" id="cfHWName">
            <xp:this.value>
              <![CDATA[#{javascript:clHardwares.getItemValueString("REQ_HW_Name")}]]>
            </xp:this.value>
          </xp:text>
        </xp:td>
        <xp:td>
          <xp:text escape="true" id="cfHWQuantity">
            <xp:this.value>
              <![CDATA[#{javascript:clHardwares.getItemValueString("REQ_HW_Quantity")}]]>
            </xp:this.value>
          </xp:text>
        </xp:td>
        <xp:td>
          <xp:text escape="true" id="cfHWAssetTagNo">
            <xp:this.value>
              <![CDATA[#{javascript:clHardwares.getItemValueString("REQ_HW_AssetTagNo")}]]>
            </xp:this.value>
          </xp:text>
        </xp:td>
        <xp:td>
          <xp:text escape="true" id="cfHWPreviousUser">
            <xp:this.value>
              <![CDATA[#{javascript:clHardwares.getItemValueString("REQ_HW_PreviousUser")}]]>
            </xp:this.value>
          </xp:text>
        </xp:td>

        <xp:td>
          <xp:link escape="true" text="Edit" id="link4">
            <xp:eventHandler event="onclick"
            submit="true" refreshMode="complete">
              <xp:this.action>
                <![CDATA[#{javascript:viewScope.put("selHardware",clHardwares.getNoteID());
getComponent("dlgAddHardware").show();}]]>
              </xp:this.action>

            </xp:eventHandler>
          </xp:link>
          <xp:link escape="true" id="link5" text="Delete">
          </xp:link>
        </xp:td>
      </xp:tr>
    </xp:repeat>
  </xp:table>
</xp:panel>

IMG1

IMG2

Foi útil?

Solução

Você já tentou definir a propriedade "removeRepeat" da repetição como TRUE?Isso remove controles div indesejados criados a partir da repetição após a conclusão do trabalho do controle.

(repita >> Todas as propriedades >> básico)

EDITAR:

esqueci de mencionar que seu botão não pode realizar uma atualização parcial na repetição se essa propriedade estiver definida como TRUE.Em vez disso, forneça à tabela circundante ou a um painel adicional seu próprio ID, que você pode usar para realizar a atualização necessária

Outras dicas

Você atualizou sua visualização depois de criar o novo documento?

banco de dados.getView("NomeVisualização").refresh();

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top