Alguma alma bondosa saberia me dizer como faço para selecionar uma linha de uma DataTable, preferencialmente com Radio Box?ô coisa engessada, tá 10 a 0 pro RadioBox por enquanto…
Grata
=**
seja mais clara manda ai o codigo da tua pagina jsf blz
vlw
[code] <h:dataTable value="#{simpleTreeBean.funcsPerfil}"
var=“item”>
<h:column>
<f:facet name=“header”>
<h:outputText value=“Nome Funcionalidade”/>
</f:facet>
<h:selectOneRadio value ="#{item.nomeFuncionalidade}" />
<f:selectItems value="#{item.nomeFuncionalidade}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome Funcionalidade"/>
</f:facet>
<h:outputText value="#{item.nomeFuncionalidade}"/>
</h:column>
</h:dataTable>
[/code]
Eu queria poder selecionar uma linha dessa tabela gerada
ah agora entendi oQ vc quer fazer…
tive Q fazer algo parecido pra um sistema Q to desenvolvendo agora mas cm um detalhe…
eu keria selecionar uma linha ou mais entendeu… ai usei o h:selectOneCheckBox…
vc ker selecionar apenas uma de cadas vez ou pod mais de uma…
ainda nao me deparei cm ece cenario de selecionar apenas uma linha d cada vz entendeu…
c puder selecionar mais d uma t mando o codigo Q fiz aki cm o h:selectOneCheckBox… blz
vlw
primeiro você tem que criar um “grupo” referente ao teu radioButton, ou seja:
<t:selectOneRadio id="meuRadio" layout="spread" value="#{meuBean.algumaPropriedade}">
<t:selectItens var="objeto" value="#{meuBean.listaQueVaiSerUsadaNoDataTable}" itemLabel="#{objeto.textoProTeuRadio}" itemValue="#{objeto.idOuOUtraCoisaPraIdentificarEle}"/>
</t:selectOneRadio>
depois no dataTable, você faria assim:
<t:dataTable value="#{meuBean.listaQueVaiSerUsadaNoDataTable}" var="objeto" indexRowVar="linhaAtual">
<t:column>
<t:radio for="meuRadio" index="#{linhaAtual}" />
</t:column>
</t:dataTable>
;D
ok, mas isso é tomahawk ou algo do tipo? em JSF puro dá pra fazer isso?
JSF puro eu não sei, o mesmo é muito limitado
mas por que não utilizar tomahawk?
pq to usando rich-faces já…
ate tentei o tomahawk, mas o rich serviu melhor pra mim
eu consegui de uma forma, digamos bizarra…
nao sei se é gambiarra ou lado negro da força
hahahahahaha
bjos , queridos e thanks for all the fish
mas o tomahawk não substitui o Richfaces
ambos se complementam
mesmo assim, poderia você postar a tua solução pro pessoal ver?
valeu
EDIT: não diga gambiarra, diga “workaround”, fica mais bonito hahaha
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<html>
<table>
<f:view>
<head>
<link type="text/css" rel="stylesheet" href="css/tree.css"/>
</head>
<script type="text/javascript">
function selectOne(form, button)
{
turnOffRadioForForm(form);
button.checked = true;
}
function turnOffRadioForForm(form)
{
for(i=0; i<form.elements.length; i++)
{
if(form.elements[i].type=='radio')
{
form.elements[i].checked = false;
}
}
}
</script>
<body>
<body>
<h:form>
<h:selectOneMenu value="#{simpleTreeBean.perfilSelecionado}">
<f:selectItems value="#{simpleTreeBean.perfis }"/>
</h:selectOneMenu>
<table>
<tr>
<td>
<td>
<a4j:commandButton styleClass="Botao" value="Ver detalhes do perfil" onclick="javascript:Richfaces.showModalPanel('MostrarDetalhesPerfil',{width:600, top:200})" action="#{simpleTreeBean.MostrarDetalhesPerfil}" reRender="formularioDetalhes" />
</td>
</tr>
</table>
</h:form><rich:modalPanel/><rich:modalPanel id="MostrarDetalhesPerfil" >
<f:facet name="header">
<h:outputText value="Detalhes do Perfil"/>
</f:facet>
<f:facet name="controls">
<f:verbatim>
<center>
Por favor, preencha todos os campos!
<br/>
<br/>
<br/>
<br/>
<a href="javascript:Richfaces.hideModalPanel('MostrarDetalhesPerfil')">Fechar
Janela</a>
</center>
</f:verbatim>
</f:facet>
<h:form id="formularioDetalhes">
<h:dataTable value="#{simpleTreeBean.funcsPerfil}" var="item" binding="#{simpleTreeBean.table}">
<h:column>
<f:facet name="header">
<h:outputText value="Id"/>
</f:facet>
<h:selectOneRadio value="#{simpleTreeBean.funcSelecionada}" onclick="selectOne(this.form, this)" valueChangeListener="#{simpleTreeBean.test}" >
<f:selectItems value="#{item.funcPerfil}"/>
</h:selectOneRadio>
</h:column>
</h:dataTable>
<a4j:commandButton value="Mostrar Detalhes Funcionalidade " action="#{simpleTreeBean.MostrarDetalhesFuncionalidade}" onclick="javascript:Richfaces.showModalPanel('MostrarDetalhesFuncionalidade',{width:600, top:200})"/>
</h:form>
</rich:modalPanel>
</body>
</f:view>
</td>
</tr>
</table>
</html>
public void test(ValueChangeEvent event){
setSelectedItem((Funcionalidade)getTable().getRowData());
}
quem não usa modalPanel, ignore o modalPanel…
Obs : item.funcPerfil é uma gambiarra, uma função que retorna uma ArrayList com a própria função…o Mais importante nesse codigo sao o Java Script e essa função
Nao sei pq cargas dágua, sempre que ele seleciona a ultima linha, ele pega o penultimo valor… se me descobrirem pq, me digam…
Beleza Leozin. Tive dando uma olhada na sua possível solução para o selectOneRadioButton com DataTable. E tentei implementar, porém como sou iniciante com jsf gostaria de reabrir este post e pedir um help por gentileza. O erro retornado é o seguinte:
[code]# 23/02/2011 00:22:06 com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/privado/unidademovel/consultardisponibilidade.xhtml]
java.lang.IllegalStateException: Could not find component ‘meuRadio’ (calling findComponent on component ‘mainForm:Teste:defaultList:0:_id102’)
[/code]
Este é o meu código:
<ui:define name="blocoLista">
<h:form id="Teste">
<t:selectOneRadio id="meuRadio" layout="spread"
value="#{unidadeMovelMBean.nome}">
<t:selectItems var="objeto" value="#{unidadeMovelMBean.dataModel}"
itemLabel="#{objeto.nome}" itemValue="#{objeto.id}" />
</t:selectOneRadio>
<adv:dataTable id="defaultList" width="483" rows="10"
style="width: 100%;" value="#{unidadeMovelMBean.dataModel}"
var="row" columnsWidth=",,,,">
<advtag:dataTableHeaders>
<ui:define name="headers">
<advtag:dataTableColumn label="" column="radio" />
<advtag:dataTableColumn label="UMO/EMO" column="nome" />
<advtag:dataTableColumn label="Unidade Sede" column="unidadeSede" />
<advtag:dataTableColumn label="Servico" column="tempoMontagem" />
<advtag:dataTableColumn label="Situacao" column="situacao" />
</ui:define>
</advtag:dataTableHeaders>
<h:column>
<t:radio index="#{linhaAtual}" for="meuRadio"></t:radio>
</h:column>
<advtag:dataTableColumn value="#{row.nome}" />
<advtag:dataTableColumn value="#{row.unidadeSede.nome}" />
<h:column>
<rich:dataList id="listaServicos" value="#{row.servicos}"
var="servico">
<h:outputText value="#{servico.nome}" />
</rich:dataList>
</h:column>
<advtag:dataTableColumn value="#{row.situacao.rotulo}" />
</adv:dataTable>
<advtag:dataScroller for="defaultList"
dataModel="#{unidadeMovelMBean.dataModel}" />
</h:form>
</ui:define>
Se puder dar uma força e ver a possível causa do erro ficarei muito grato.