Problema de lógica [manipulação de resultset]

5 respostas
_fs

Olá, bom dia.

Situação: recebo os dados com os nomes das colunas e com o rs numa página .vm e manipulo-os usando VTL.

Objetivo: fazer com que os dados se disponham da seguinte maneira na tabela

coluna1    coluna2    coluna3
dado1       dado2      dado3
coluna4    coluna5    coluna6
dado4      dado5       dado6

Consegui fazer um treco aqui, mas não ficou nada genérico:

#set( $contadorCol = 1 ) ##1 porque a primeira coluna é ID
#set( $contadorRs = 0 )
  <table>
    <tr>
      #foreach( $i in [1..5] )
        #foreach( $col in [1..5] )
          <th>$!action.getCols( $contadorCol )</th>
          #set( $contadorCol = $contadorCol + 1 )
        #end
        </tr><tr>
        #foreach( $i in [1..5] )
	        <td style="border: 1px #A6A6A6 solid;">$!action.getResultset( $contadorRs )</td>
          #set( $contadorRs = $contadorRs + 1 )
        #end
        </tr><tr>
      #end
    </tr>
  </table>

(nada genérico e extremamente horrendo)

Poréns: não quero juntar as colNames e o Rs num ArrayList só.

Dúvida: como fazer isso ficar mais bonitinho/decente/usável/não-vergonhoso?

Valeu!

5 Respostas

cv1

Hmmm... um jeito de deixar a coisa mais bonitinha (faz um tempinho ja q eu nao mexo com velocity, talvez tenha algum erro de sintaxe, mas espero que pelo menos passe a ideia):

#macro(bloco $coluna $linhas)
<div class="bloco">
 <span class="coluna">$coluna</span>
 <div class="linhas">
  #foreach($linha in $linhas)
  <div class="linha">$linha</div>
  #end
 </div>
</div>
#end
#foreach($coluna in $colunas)
  #bloco($coluna, $foo.getLinhas($coluna))
#end

E o resto eh CSS ;)

Ah, tipo, se ficar ruim de posicionar os blocos do jeito que vc mostrou, passe o velocityCount pra macro, mudando as duas primeiras linhas:

#macro(bloco $count $coluna $linhas)
<div class="bloco-$count">
 <span class="coluna">$coluna</span>
 <div class="linhas">
  #foreach($linha in $linhas)
  <div class="linha">$linha</div>
  #end
 </div>
</div>
#end

Assim, voce pode fazer um estilo para bloco-0, bloco-1, bloco-2, e assim vai. ;)

_fs

Valeu pelo reply cv :smiley:

Mas o tchan (…) da coisa é usar tabelas por motivos obscuros e secretos. POREM o seu reply me esclareceu uma coisa, talvez agora consiga fazer o treco direito \o/

mais uma marca no caderninho de debitos de cerveja

_fs

Consegui fazer bonito usando as macros \o/

Valeu cv :smiley:

cv1

Como ficou, afinal? O povo quer saber! :smiley:

_fs

hehe esqueci-me

#set( $countCol = 1 )
#set( $countRs = 1 )
#macro( macrodoPotter $index )
	<tr>
	#foreach( $i in [1..$index] )
		<th>
			$!action.getCols( $countCol )
		</th>
		#set( $countCol = $countCol + 1 )
	#end
	</tr>
	<tr>
	#foreach( $i in [1..$index] )
		<td>$!action.getResultset( $countRs )&nbsp;</td>
		#set( $countRs = $countRs + 1 )
	#end
	</tr>
#end

<table>
#foreach( $i in [1..5] )
	#macrodoPotter( 5 )
#end
</table>
Criado 29 de janeiro de 2004
Ultima resposta 29 de jan. de 2004
Respostas 5
Participantes 2