Displaytags e checkbox

10 respostas
Ironlynx
Faz um tempo que eu não mexo com displaytag e esqueci algumas coisas(Tio Iron tá velho...). Quero exibir uma listagem com todos os usuários do meu sistema(Até aí é fácil), e nessa listagem, ter um checkbox que pode ser selecionado para levar a uma página para edição desse mesmo usuário(antes que pergunte, isso é um atributo que só o admin do sistema faz...). Bom, sei que dá para exibir assim:
display:table class="displaytagTable" name="editarUsuarios" export="true" sort="list" defaultsort="1" id="usuario" pagesize="50" requestURI="ListarUserAction.listar.action" >    
<display:setProperty name="export.csv.filename" value="usuarios.csv"/>
<display:setProperty name="export.excel.filename" value="usuarios.xls"/>
<display:setProperty name="export.xml.filename" value="usuarios.xml"/>

 <display:column property="checkbox" />
 <display:column property="empresa" title="Empresa" sortable="true" style="width: 580px" />            
     <display:column property="id" title="ID"  style="width: 580px" />
     <display:column property="nome" title="Nome" style="width: 580px" />
     <display:column property="username" title="Login" style="width: 580px" />
     <display:column property="email" title="Email" style="width: 580px" /> 
     <display:column property="telefone" title="Telefone" style="width: 580px" /> 
      </display:table>
Mas como eu faço para pegar o id associado a dado usuário para levá-lo a uma página para edição dos dados?Não lembro ao certo, mas acho que tenho que extender um Decorator é isso???Qualquer dica(snippet de código) será bem vinda...

10 Respostas

aleck
<c:if test="${not empty listaPedidos}">
<display:table id="row" cellpadding="0" cellspacing="0" name="requestScope.listaPedidos" pagesize="10" requestURI="" class="table_displaytag" defaultsort="2" defaultorder="descending">
	<display:column url="/versionamento.action" title="Alterar" paramProperty="idPedidoSeguro" paramId="idPedidoSeguro" class="fonte_displaytag">
	    <img alt="Alterar pedido" src="images/bloco3.gif" border="0">
	</display:column>
	<display:column url="/versionamento.action" paramProperty="idPedidoSeguro" paramId="idPedidoSeguro" class="fonte_displaytag" title="Número Pedido" style="width: 30mm" property="pedido" sortable="true"/>
	<display:column class="fonte_displaytag" title="Data Criação" property="dataCotacao" format="{0,date,dd-MM-yyyy}" sortable="true"/>
	<display:column class="fonte_displaytag"  title="Nome"  property="nomeCliente" sortable="true"/>
	<display:column class="fonte_displaytag" title="Produto" property="nomeProduto" sortable="true"/>
	<display:column class="fonte_displaytag" title="Status" property="mensagem" sortable="true"/>						
	<display:column url="/copiarPedido.action" title="Copiar pedido" paramProperty="idPedidoSeguro" paramId="idPedidoSeguro" class="fonte_displaytag">
	<img alt="Copiar pedido" src="images/replicar.gif" border="0">
	</display:column>
	<display:column title='<a href="javascript:selecionarTodas();"><img alt="Excluir pedido" src="images/lixeira3.gif" border="0"></a>'>
	<input name="checkbox" type="checkbox"	value="<c:out value='${row.idPedidoSeguro}'/>" class="checkBox01" id="checkbox" />
	<input name="checkbox" type="hidden" id="checkbox"  />							
	</display:column>
</display:table>
</c:if>

Eu uso jstl para colocar o id nos values dos checkbox.

abelgomes

caro Ironlynx ao inves de um chackbox, não seria mais interessante colocar uma imagem para o usuario clicar?

<display:column class="defaultTdSemCor" headerClass="label"
									style="width: 60px;">
									<center><a
										href="javascript:window.parent.editar('${usuario.id}')">&nbsp;&nbsp;<img
										title="Alterar" src="img/icone_detalhar.gif" border="0" /></a></center>
								</display:column>

o que vc acha?Ou no seu caso tem que ser um checkbox mesmo?

Pedrosa

No seu caso o que se adapta melhor é um radio ou uma imagem com link normal, mas se precisar fazer uma exclusão onde mais de um registro deve ser selecionado use o checkbox.

Ex:

<d:column width="10%" title="Sel." headerClass="tableHeader">
    <c:if test="${protocolos.smbimp_qtd_reg > 0}">
        <input type="checkbox" name="marcados" align="middle" value="<core:out value='${protocolos.smbimp_cod}'/>"/>
    </c:if>	 
</d:column>
Ironlynx

Na verdade, eu não tô usando JSTL não…
até pq eu já tô entregando os dados completos(a lista de usuários) pela minha action.

Até poderia ser uma imagem, mas daí provavelmente vc deve ter N arquivos JS jogando para uma página diferente é isso?

Eu acho que não fui 100% claro, por isso detalho aqui:
Quando for selecionado o Usuário que irá ser editado, nessa mesma página há 2 botões, um Editar, que levará ele a Action de edição desse usuário, e outro Excluir, que levará a exclusão desse usuário.

abelgomes

Da uma olhada aqui…um botão edita…e o outro etiva ou inativa o registro…:wink: é isso que vc quer?


abelgomes

mas agora se for selecionar varios para excluir pode usar checkbox…

e respondendo sua pergunta, só tenho 2 funções javascript uma pra editar e outra para exlcuir :wink: que vai no onclick da figura

Ironlynx

Abel, era um pouco diferente do que vc tava fazendo, só que eu achei a figura que vc postou tão bacana que me interessei!
Posta o código(incluso os Javascript) aqui, se o seu código não for fechado é claro(use o anexo, se for grande).No meu caso há apenas(abaixo da listagem) dois botões de alterar e excluir.As imagens vc pegou aonde?
Ficou bacana!O que vc tá usando(FW web , ERP…)?

abelgomes

Não posso postar o codigo na integra…mas os icones, javascript e a parte do display vou fazer um resumão aqui pra vc entender…

//javascript
function editar(codigoFonte, codigoAdm){
		document.forms[0].codigoUnidadeAdm.value = codigoAdm;
		document.forms[0].codigoFonte.value = codigoFonte;
		document.forms[0].taskType.value = "editar";
	    document.forms[0].submit();
	}
	
	function desativarAtivarItem(codigoFonte, codigoAdm){
		document.forms[0].codigoUnidadeAdm.value = codigoAdm;
		document.forms[0].codigoFonte.value = codigoFonte;
		document.forms[0].taskType.value = "ativarDesativar";
	    document.forms[0].submit();
	}
//fim javascript

//display table
<tr>
							<td></td>
							<display:table pagesize="15" id="item" name="itensUA"
								style="width: 100%;" requestURI="">
								<display:column class="defaultTdSemCor" headerClass="label"
									style="width: 60px;">
									<center><a
										href="javascript:editar('${item.codigoFonte}','${item.codigoUnidadeAdm}')">&nbsp;&nbsp;<img
										title="Alterar" src="img/icone_detalhar.gif" border="0" /></a></center>
								</display:column>

								<display:column class="defaultTdSemCor" headerClass="label"
									media="html" style="width: 60px;">
									<logic:equal value="A" property="coAtivo" name="item">
										<center><a
										href="javascript:if(confirm('Deseja realmente desativar este registro?')){desativarAtivarItem('${item.codigoFonte}','${item.codigoUnidadeAdm}');}">&nbsp;&nbsp;<img
										title="Inativar" src="img/icon_validar.png" border="0" /></a></center>
									</logic:equal>
									<logic:equal value="I" property="coAtivo" name="item">
										<center><a
										href="javascript:if(confirm('Deseja realmente ativar este registro?')){desativarAtivarItem('${item.codigoFonte}','${item.codigoUnidadeAdm}');}">&nbsp;&nbsp;<img
										title="Ativar" src="img/desativar.png" border="0" /></a></center>
									</logic:equal>
								</display:column>

								<display:column property="codigoDescricaoAdm" title="Unidade Administrativa"
									class="defaultTdSemCor" headerClass="label" />
								<display:column style="width:330px" property="codigoDescricaoFonte"
									title="Fonte de Recurso" class="defaultTdSemCor" headerClass="label" />
								<display:column style="width:330px" property="txDescricaoGestora"
									title="Unidade Gestora" class="defaultTdSemCor" headerClass="label" />
								<display:column style="text-align:center" property="numOrdem"
									title="Numero de Ordenação" class="defaultTdSemCor" headerClass="label" />
								<display:column property="coAtivo" style="text-align:center" title="Ativo/Inativo"
									class="defaultTdSemCor" headerClass="label"/>
							</display:table>
						</tr>
//fim display table

boa sorte ai…qualquer duvida é só postar…

Ironlynx

Abel, a tag logicé o quê?Struts(não manjo nada dele)?Tô usando o Mentawai aqui, por isso a pergunta...

Não tô conseguindo nem tacar uma checkbox do lado de cada ID! :x Dá uma olhada:
&lt;h2&gt;Listagem de Usuarios do sistema:&lt;/h2&gt;
&lt;display:table class="displaytagTable" name="editarUsuarios" export="true" sort="list" defaultsort="2" id="usuario" pagesize="50" requestURI="ListarUserAction.editar.action" &gt;    
&lt;display:setProperty name="export.csv.filename" value="usuarios.csv"/&gt;
&lt;display:setProperty name="export.excel.filename" value="usuarios.xls"/&gt;
&lt;display:setProperty name="export.xml.filename" value="usuarios.xml"/&gt;

 &lt;display:column property="id_usuario" title="ID" style="width: 60px" &gt;
  &lt;input type="checkbox" name="selecionado" value="" /&gt;
 &lt;/display:column&gt;
  
 &lt;display:column property="empresa" title="Empresa" sortable="true" style="width: 580px" /&gt;     
     &lt;display:column property="nome" title="Nome" style="width: 580px" /&gt;
     &lt;display:column property="username" title="Login" style="width: 580px" /&gt;
     &lt;display:column property="email" title="Email" style="width: 580px" /&gt; 
     &lt;display:column property="telefone" title="Telefone" style="width: 580px" /&gt; 
     &lt;display:column property="perfil" title="Perfil" style="width: 580px" /&gt; 
     &lt;display:column property="senha" title="Senha" style="width: 580px" /&gt;
     &lt;display:column property="cpf" title="CPF" style="width: 580px" /&gt;     
 &lt;/display:table&gt;
abelgomes

sim…logic é struts…no seu caso, lembro que qaundo estava aprendendo displaytable só achava exemplos com Mentawai…mas é o seguinte…tente substituir o logic por um if ai na jsp…pegando a lista do request…que vai ficar 10 tb…

Criado 27 de março de 2009
Ultima resposta 30 de mar. de 2009
Respostas 10
Participantes 4