2012-05-17 7 views
9

入力フィールドでいっぱいのダイナミックデータテーブルを作成しています。場合によっては、ユーザーが一部の入力に値を挿入すると、特定のセルを更新し、このセルのみを更新する必要があります。私はそれが簡単かもしれないと思ったが、それを効かせなかった。 私は更新は、「勇気の合計」であるたいセルときに、2つの他の細胞変化の値が、このセルを更新する必要があります。プライムフェイスの特定のセルを更新する方法dataTable

cell to update

EDITED

js chrome

私はしました"id:lancamentoNF:popupLancamentoNF:tabelaItensNF:0:valorTotalItemが見つかりません"という完全なIDを持つtryy f:ajaxが見つかりました。 p:ajaxに変更され、エラーは発生しませんが、更新されません!

<h:panelGroup id="painelItensNF" layout="block" styleClass="hrgi-div-form aba-lancamento-nf clearfix" style="overflow:auto;"> 
    <h:panelGroup layout="block" style="width: 1700px;"> 
     <p:dataTable id="tabelaItensNF" value="#{modeloTabelaDinamicaItemNF.itens}" var="itemEmbrulhado" styleClass="tabelaDinamica" height="174" style="width: 100%;" rowIndexVar="indice"> 
      ... (some columns) 
      <p:column style="width: 5%" 
         headerText="quantidade"> 
       <hrgi:spinner id="quantidadeItem" 
           value="#{itemEmbrulhado.item.produto.detalheTributavel.quantidade}" 
           dinheiro="false" 
           fator="#{itemEmbrulhado.item.produto.detalheTributavel.unidadeFracionada?0.01:1}" 
           local="pt-BR" min="0.00" width="70"> 
        <p:ajax event="change" 
          update="lancamentoNF:popupLancamentoNF:tabelaItensNF:#{indice}:valorTotalItem" 
          listener="#{controladorPopupLancamentoNF.calcularValorTotalItem(itemEmbrulhado)}" global="false" /> 
        <f:convertNumber 
          maxFractionDigits="#{itemEmbrulhado.item.produto.detalheTributavel.unidadeFracionada?2:0}" 
          minFractionDigits="#{itemEmbrulhado.item.produto.detalheTributavel.unidadeFracionada?2:0}" 
          locale="pt-BR" 
          for="quantidadeItem"/> 
       </hrgi:spinner> 
      </p:column> 
      <p:column style="width: 5%" 
         headerText="valor unitario"> 
       <hrgi:spinner id="valorUnitarioItem" 
           value="#{itemEmbrulhado.item.produto.detalheTributavel.valorUnitario}" 
           dinheiro="true" fator="0.01" local="pt-BR" min="0.00" width="70"> 
        <p:ajax event="change" 
          update="lancamentoNF:popupLancamentoNF:tabelaItensNF:#{indice}:valorTotalItem" 
          listener="#{controladorPopupLancamentoNF.calcularValorTotalItem(itemEmbrulhado)}" global="false"/> 
        <f:convertNumber type="currency" currencyCode="BRL" currencySymbol="R$ " 
            maxFractionDigits="10" minFractionDigits="2" locale="#{cc.attrs.local}" 
            for="valorUnitarioItem"/> 
       </hrgi:spinner> 
      </p:column> 
      <p:column style="width: 3%" 
         headerText="valor total"> 
       <h:outputText id="valorTotalItem" value="#{itemEmbrulhado.item.produto.valorTotal}"> 
        <f:convertNumber type="currency" currencyCode="BRL" currencySymbol="R$ " 
            maxFractionDigits="2" minFractionDigits="2" locale="pt-BR" 
            for="valorUnitarioItem"/> 
       </h:outputText> 
      </p:column> 
      ... (more columns) 
     </p:dataTable> 
    </h:panelGroup> 
</h:panelGroup> 

それは私がそれはないと思う、私は完全なIDを持つpanelGroup「painelItensNF」を更新したときに動作しますが、フォーカスが失われ、ユーザーは、彼が継続して働いていた入力を見つける必要があります...

+0

によって

<p:ajax ... update="lancamentoNF:popupLancamentoNF:tabelaItensNF:#{indice}:valorTotalItem" /> 

を交換してください。 –

答えて

14

"valorTotalItem" を使用することができますちょうどupdate="valorTotalItem"を使用してください。それはすでに現在の行に相対的です。

ので、これを可能にするようだとあなたはあなたの受け入れ答えを交換する必要があり

<p:ajax ... update="valorTotalItem" /> 
+0

これはうまくいきませんでした...行インデックスのない完全なIDを使用するだけです – brevleq

+0

これはいつも私のために働いています。どのJSF impl/versionとPF versionを使用していますか? – BalusC

+0

PF 2.2.1 with myfaces 2.1.6 – brevleq

0

単一のセルを更新することが可能です。 IDは自動生成されるため、このコンポーネントをIDで更新することはできません。
primefaces 3.3に切り替えることはできます(最終リリースではありませんが、スナップショットで作業を開始できます)。http://www.primefaces.org/showcase-labs/ui/selectors.jsf
さらに多くの変更が加えられますが、あなたがそれをやることができるかどうかは分かりません。

または、パネルを更新し、適切なコンポーネントにフォーカスを設定するためのjavascriptを追加することができます。 p:ajaxコンポーネントの "oncomplete"メソッドでjavascriptを実行します。

EDIT: が更新からインデックスを削除し、それは次のようになります。 ":lancamentoNF:popupLancamentoNF:tabelaItensNF:valorTotalItem" BalusCは正しいですそしてもちろん は、あなたもちょうど

+0

ご返信ありがとうございます。私はidがパターンに従っていることを示す新しい画像を追加しました。このプロジェクトはプライムフェイス3に変更するのは難しいです(すでに試しました)。 – brevleq

+0

@brevleqこれを更新しようとします: ":lancamentoNF:popupLancamentoNF:tabelaItensNF:valorTotalItem"(インデックスがなく、 ":"で始まる)。それは例外をスローしませんが、私はそれが更新されるのか分からない。多分 "valorTotaItem"列全体。私に何が起こるか教えてください – Damian

+0

ありがとう@ダミアン、インデックスを削除するアプローチが働いた!私は理由を理解していないが、働いた...私は解決としてマークすることができますので、答えを変更してください:) – brevleq

関連する問題