2012-05-17 21 views
9

Giriş alanları ile dolu dinamik bir veritabani oluşturuyorum. Bazen, kullanıcı bazı girdilere değer eklediğinde, belirli bir hücre güncellenmeli ve yalnızca bu hücre olmalıdır. Basit olabileceğini düşündüm, ama yine de işe yaramadı. ben güncelleme istiyorum hücre "cesaret toplam" dır, diğer ikisi hücre değişim değeri bu hücre güncellenmesi gerekir:Verileri öntanımlı verilerde yalnızca belirli bir hücreye güncelleştirmeTekrar

cell to update

js chrome

Ben ettik DÜZENLENMİŞ tryied f: tam id ile ajax ve "id ile bileşen: lancamentoNF: popupLancamentoNF: tabelaItensNF: 0: valorTotalItem bulunamadı". P olarak değiştirildi: ajax ve hatalar yok ama güncellenmiyor!

<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> 

Ben tam kimliği ile panelGroup "painelItensNF" güncelleme zaman çalışır, ancak odak kaybolur ve kullanıcı devam etmek çalışıyordu girişi bulmalı ...

+0

tarafından

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

değiştirin. –

cevap

14

"valorTotalItem" kullanabilir Sadece update="valorTotalItem" kullanın. Mevcut sıraya göre zaten.

Yani, bu mümkün görünmektedir olarak Size kabul cevabı değiştirmelidir

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

Bu işe yaramadı ... Sadece satır kimliği olmadan tam kimliği kullanarak çalışır – brevleq

+0

Her zaman benim için çalıştı. Hangi JSF impl/sürüm ve PF sürümünü kullanıyorsunuz? – BalusC

+0

PF 2.2.1 myfaces ile 2.1.6 – brevleq

0

Ben sanmıyorum tek bir hücreyi güncellemek mümkün. Kimliği otomatik olarak oluşturulduğundan, bu bileşeni kimliğine göre güncelleyemezsiniz.
3.3 (ilk sürüm henüz değil, ancak anlık görüntü ile çalışmaya başlayabilirsiniz) ilk sınırlarına geçmeyi deneyebilirsiniz ve ilk tercihleri ​​kullanarak istediğinizi yapabileceğinizi deneyebilirsiniz: http://www.primefaces.org/showcase-labs/ui/selectors.jsf
Bundan daha fazla değişiklik yapacaksınız, ama yapabileceğinden emin değilim. Veya, odağı uygun bileşene ayarlamak için paneli güncelleyebilir ve javascript ekleyebilirsiniz. javascript'i p: ajax bileşeninin "tamamlanmamış" yönteminde yürütün.

DÜZENLEME: güncellemesinden dizinini kaldırın, bu yüzden şöyle görünür: ": lancamentoNF: popupLancamentoNF: tabelaItensNF: valorTotalItem" BalusC doğru Ve tabii , ayrıca sadece

+0

Cevabınız için teşekkür ederiz. Kimliği bir desen izleyerek yeni resim ekledim. Bu proje 3 (ilk denemelere) değişime geçmeye zor. – brevleq

+0

@brevleq bunu güncellemeyi deneyin: ": lancamentoNF: popupLancamentoNF: tabelaItensNF: valorTotalItem" (dizinsiz ve ":" ile başlayan). istisna atmayacak, ama ne güncelleneceğinden emin değilim. belki tüm "valorTotaItem" sütunu. – Damian

+0

neler olduğunu bilmeme izin verin @Damian, dizinin kaldırılması yaklaşımı işe yaradı! Nedenini anlamıyorum ama işe yaradı ... Lütfen cevabı değiştirin, böylece çözüldüğü gibi işaretleyebilirim :) – brevleq

İlgili konular