Boa tarde, tenho um sistema onde os usuarios fazem o preenchimento de valores dentro do proprio datatable, ou seja, tenho um dataTable que possui varios inputs (<h:input), isso funciona normalmente, só que por linha, ou seja, para alterar uma informação apenas se for linha a linha, alguem conhece algo que posso fazer, por exemplo, ter um botão que pressionado alteraria todas as linhas daquele datatable, conforme os valores preenchidos.
Se não fui claro, posso explicar melhor.
Posta o código do jsp e do bean. Ajuda a entender bem o que você quer.
[]´s
Daniel
Então, hoje eu consigo recuperar a linha do datatble que quero alterar, agora quero pegar todas as linhas deste datatable e altera-las.
Tem ideia como eu faria isso?
eu utilizo isso aqui para pegar a linha da coleção a alterar:
Object obj = FacesContext.getCurrentInstance().getExternalContext
().getRequestMap().get(“tudo”);
HashMap hmp = new HashMap();
hmp=(HashMap) obj;
janeiro= hmp.get(“janeiro”).toString();
Ou seja, assim só consigo pegar uma linha, o que eu usaria para pegar
a coleção toda?
Alguem sabe?
Por isso estou pedindo o código, principalmente do Bean e da classe do objeto que usa para popular a DataTable. Posta ai que fica mais facil para ajudar.
[]´s
Daniel
Esta é a pagina JSF
<t:dataTable
id="DtReferencias"
styleClass="tabela"
rowClasses="list-row-even,list-row-odd"
border="3"
bgcolor="#F0F8FF"
value="#{manager.todasReferencias}"
var="tudo">
<t:column width="90px">
<h:panelGrid columns="1">
<h:outputText rendered="#{!manager.compoem}" styleClass="nomeDeCampos" value="#{tudo.t_cpcl_o}" />
<h:commandLink rendered="#{manager.compoem}" action="#{manager.refEspecificaRepresentante}">
<h:outputText styleClass="nomeDeCampos" value="#{tudo.t_cpcl_o}" />
<f:param name="ref" value="#{tudo.t_cpcl_o}"/>
</h:commandLink>
<h:outputLink target="_blanck" value="\metas\representantes\DtReferenciasHist.jsf">
<h:outputText value=" Histórico" />
<f:param name="paramRef" value="#{tudo.t_cpcl_o}"/>
</h:outputLink>
<h:outputText styleClass="textoDeCampos" value=" #{tudo.t_dsca_o} " />
<h:outputText styleClass="msgAlteracao" value="#{tudo.t_obse_o} #{tudo.t_dtal_o}" />
<h:commandButton styleClass="botao" value="Alterar" onclick="if (confirm('Tem certeza que deseja alterar? Esta ação vai alterar a referencia : #{tudo.t_cpcl_o}')) {return true }; return false;" action="#{manager.getAlteraRefUgb}"/>
<h:outputText value="#{manager.msg}" />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:outputText styleClass="porc" value="Prev(Q)"/>
<h:outputText styleClass="msgAlteracao" value="Var.%"/>
<h:outputText styleClass="valor" value="Fatu(Q)"/>
<h:outputText styleClass="porc" value="Entrada(Q)"/>
<h:outputText styleClass="valor" value="Cancel(Q)"/>
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vjan}" styleClass="porc" value="#{tudo.janeiroq}" size="4" />
<h:outputText styleClass="msgAlteracao" value="#{tudo.janeiropor}%" />
<h:outputText styleClass="porc" value="#{tudo.janeiroreal}" />
<h:outputText styleClass="porc" value="#{tudo.janeiropd} " />
<h:outputText styleClass="porc" value="#{tudo.janeiroqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vfev}" styleClass="porc" value="#{tudo.fevereiroq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.fevereiropor}%" />
<h:outputText styleClass="porc" value="#{tudo.fevereiroreal} " />
<h:outputText styleClass="porc" value="#{tudo.fevereiropd} " />
<h:outputText styleClass="porc" value="#{tudo.fevereiroqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vmar}" styleClass="porc" value="#{tudo.marcoq}" size="4" />
<h:outputText styleClass="msgAlteracao" value="#{tudo.marcopor}%" />
<h:outputText styleClass="porc" value="#{tudo.marcoreal} " />
<h:outputText styleClass="porc" value="#{tudo.marcopd} " />
<h:outputText styleClass="porc" value="#{tudo.marcoqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vabr}" styleClass="porc" value="#{tudo.abrilq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.abrilpor}%" />
<h:outputText styleClass="porc" value="#{tudo.abrilreal} " />
<h:outputText styleClass="porc" value="#{tudo.abrilpd} " />
<h:outputText styleClass="porc" value="#{tudo.abrilqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vmai}" styleClass="porc" value="#{tudo.maioq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.maiopor}%" />
<h:outputText styleClass="porc" value="#{tudo.maioreal} " />
<h:outputText styleClass="porc" value="#{tudo.maiopd} " />
<h:outputText styleClass="porc" value="#{tudo.maioqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vjun}" styleClass="porc" value="#{tudo.junhoq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.junhopor}%" />
<h:outputText styleClass="porc" value="#{tudo.junhoreal} " />
<h:outputText styleClass="porc" value="#{tudo.junhopd} " />
<h:outputText styleClass="porc" value="#{tudo.junhoqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vjul}" styleClass="porc" value="#{tudo.julhoq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.julhopor}%" />
<h:outputText styleClass="porc" value="#{tudo.julhoreal} " />
<h:outputText styleClass="porc" value="#{tudo.julhopd} " />
<h:outputText styleClass="porc" value="#{tudo.julhoqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vago}" styleClass="porc" value="#{tudo.agostoq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.agostopor}%" />
<h:outputText styleClass="porc" value="#{tudo.agostoreal} " />
<h:outputText styleClass="porc" value="#{tudo.agostopd} " />
<h:outputText styleClass="porc" value="#{tudo.agostoqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vset}" styleClass="porc" value="#{tudo.setembroq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.setembropor}%" />
<h:outputText styleClass="porc" value="#{tudo.setembroreal} " />
<h:outputText styleClass="porc" value="#{tudo.setembropd} " />
<h:outputText styleClass="porc" value="#{tudo.setembroqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vout}" styleClass="porc" value="#{tudo.outubroq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.outubropor}%" />
<h:outputText styleClass="porc" value="#{tudo.outubroreal} " />
<h:outputText styleClass="porc" value="#{tudo.outubropd} " />
<h:outputText styleClass="porc" value="#{tudo.outubroqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vnov}" styleClass="porc" value="#{tudo.novembroq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.novembropor}%" />
<h:outputText styleClass="porc" value="#{tudo.novembroreal} " />
<h:outputText styleClass="porc" value="#{tudo.novembropd} " />
<h:outputText styleClass="porc" value="#{tudo.novembroqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:inputText readonly="#{manager.vdez}" styleClass="porc" value="#{tudo.dezembroq}" size="4"/>
<h:outputText styleClass="msgAlteracao" value="#{tudo.dezembropor}%" />
<h:outputText styleClass="porc" value="#{tudo.dezembroreal} " />
<h:outputText styleClass="porc" value="#{tudo.dezembropd} " />
<h:outputText styleClass="porc" value="#{tudo.dezembroqc} " />
</h:panelGrid>
</t:column>
<t:column width="70px">
<h:panelGrid columns="1">
<h:outputText styleClass="valor" value="#{tudo.totalqtde}" />
<h:outputText styleClass="msgAlteracao" value="#{tudo.pqtot}%" />
<h:outputText styleClass="valor" value="#{tudo.totalreal}" />
<h:outputText styleClass="valor" value="#{tudo.totalpend} " />
<h:outputText styleClass="valor" value="#{tudo.totalcanc} " />
</h:panelGrid>
</t:column>
</t:dataTable>
</t:div>
Ou seja, neste codigo da pagina acima, eu tenho informacoes de um produto e 12 inputs de informação que são preenchidos dinamicamente pelo bean e como temos inputs nesta pagina jsf, os usuarios podem alterar as informações, o codigo do botão de alteração é esse aqui:
public String getAlteraRefUgb(){
Referencia ref = new Referencia();
Object obj = FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("tudo");
HashMap hmp = new HashMap();
hmp=(HashMap) obj;
ref.setT_qtde_o_1(t_qtde_o_1= hmp.get("janeiroq").toString());
ref.setT_qtde_o_2(t_qtde_o_2= hmp.get("fevereiroq").toString());
ref.setT_qtde_o_3(t_qtde_o_3= hmp.get("marcoq").toString());
ref.setT_qtde_o_4(t_qtde_o_4= hmp.get("abrilq").toString());
ref.setT_qtde_o_5(t_qtde_o_5= hmp.get("maioq").toString());
ref.setT_qtde_o_6(t_qtde_o_6= hmp.get("junhoq").toString());
ref.setT_qtde_o_7(t_qtde_o_7= hmp.get("julhoq").toString());
ref.setT_qtde_o_8(t_qtde_o_8= hmp.get("agostoq").toString());
ref.setT_qtde_o_9(t_qtde_o_9= hmp.get("setembroq").toString());
ref.setT_qtde_o_10(t_qtde_o_10= hmp.get("outubroq").toString());
ref.setT_qtde_o_11(t_qtde_o_11= hmp.get("novembroq").toString());
ref.setT_qtde_o_12(t_qtde_o_12= hmp.get("dezembroq").toString());
ref.setT_cpcl_o(this.t_cpcl_o=hmp.get("t_cpcl_o").toString());
ref.setT_year_o(this.t_year_o=hmp.get("t_year_o").toString());
ref.setT_cena_o(this.t_cena_o=hmp.get("t_cena_o").toString());
ref.setT_ugbs_o(this.t_ugbs_o=hmp.get("t_ugbs_o").toString());
ref.setT_ctyp_o(this.t_ctyp_o=hmp.get("t_ctyp_o").toString());
if (!t_dimx_o.equals("todas")){
ref.setT_dimx_o(this.t_dimx_o=hmp.get("t_dimx_o").toString());
ref.setT_crep_o(this.t_crep_o=hmp.get("t_crep_o").toString());
}else{
ref.setT_dimx_o(this.t_dimx_o);
}
String retorno=ref.getAlteraRefUgb();
this.msg=ref.getMsgErroT();
return "retorno";
}
Ou seja, eu consigo recuperar no bean a informação digitada em um input de uma linha, gostaria de fazer isso para todas as linhas.
Será que é possivel?