Tabela paginada e com diferenciação de cor nas linhas
Publicado por sombriks 22/08/2006
[ Hits: 6.292 ]
Homepage: http://www.google.com/profiles/Sombriks
Este trecho de código serve mais como exemplo pra alguém que precise paginar reultados de um banco de dados. Note que ele foi testado no Firefox, Konqueror, Opera e até mesmo no Internet Explorer, de modo que, de 0 a 10, eu daria 9,5. Espero que seja útil a alguém.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/> <title>Resultados de ALFABETO</title> <style> h3{ color:rgb(255,200,200); } h2{ color:rgb(200,200,200);/* Ver estas três cores pra colorir as linhas da tabela.*/ } h1{ color:rgb(200,200,255); } fieldset{ width: 50%; height: 50%; } table{ border-left: groove ; border-right: groove ; background-color:rgb(200,234,255); width: 100%; height: 100%; } tr{ color: rgb(120,130,140); } td{ } a{ color: rgb(0,250,20); text-decoration: none; } a:hover{ border-style: dashed ; color: rgb(250,20,0); text-decoration: none; } #data01{ } #data1Header{ border-top: groove ; } #data1Footer{ border-bottom: groove ; } .linhaPar{ } .linhaImpar{ } #line01{ background-color: rgb(190,180,170); } #line02{ background-color: rgb(170,180,190); } #line03{ background-color: rgb(190,180,170); } #line04{ background-color: rgb(170,180,190); } #line05{ background-color: rgb(190,180,170); } #line06{ background-color: rgb(170,180,190); } #line07{ background-color: rgb(190,180,170); } </style> <!-- link type="text/css" rel="stylesheet" href="testess.css"/ --> <script type="text/javascript"> <!-- //valores das células da tabela; var dataGrid = [] //Linhas visíveis; var viewPort = 5; //Primeiro da lista exibida, e não o primeiro da grade. var first = 2; //Último da lista exibida. var last = first+viewPort; //Chamado quando o corpo da página carrega function init(){ /* Ao que parece, o processo de se capturar a tabela é a) rápido demais e por isso uma linha ainda nao existe a essa altura b) muito lento de forma que o código continua a ser executado mesmo antes dessa função terminar. por isso um try/catch se faz necessário aqui. */ try{ tabela=document.getElementById('data1'); for(var i=0;i<=tabela.rows.length;i++){ dataGrid[i]=[];//Inicializando uma linha na grade javascript var linha=tabela.rows[i].cells; for(var j=0;j<linha.length;j++){ var dataLine=dataGrid[i]; dataLine[j]=linha[j].innerHTML;//Isto não funcionou com inerText! dataGrid[i]=dataLine; } } } catch(err){ startViewPort(); } startViewPort(); } //Sempre é chamado para limpar a tabela. function clearTable(){ tabela=document.getElementById('data1'); var i=0; while(i<tabela.rows.length){ tabela.deleteRow(i) } } /*Esse faz todo o trabalho; pega os campos salvos nos arrays e põe de volta na tabela */ function startViewPort(){ if(first+viewPort<dataGrid.length && first>=0){ clearTable(); tabela=document.getElementById('data1'); for(var i=0;i<viewPort;i++){ var dataLine=dataGrid[first+i]; //De acordo com o W3C, eu consigo pegar uma referência à linha em tempo de criação. var linha=tabela.insertRow(i); for(var j=0;j<dataLine.length;j++){ var celula=linha.insertCell(j); celula.innerHTML=dataLine[j]; } if(first%2!=0){ if(i%2!=0)tabela.rows[i].style.background="#fdecde"; } else{ if(i%2==0)tabela.rows[i].style.background="#fdecde"; } } } } function firstRow(){ first=0; startViewPort(); } function prevRow(){ if(first!=0)first-=1; startViewPort(); }/* Com as condicionais evita-se de modificar a variável de forma desordenada e se ter um certo efeito de "congelamento" da página visível. */ function nextRow(){ if(first!=dataGrid.length-viewPort-1)first+=1; startViewPort(); } function lastRow(){ first=dataGrid.length-viewPort-1; startViewPort(); } --> </script> </head> <body onload="init();"> <fieldset><legend>Tabela teste</legend> <table id="data1Header"> <tr id="header1"> <th> X </th> <th> X </th> <th> X </th> <th> X </th> </tr> </table> <table id="data1"> <tr id="line1"> <td>a</td> <td>a</td> <td>a</td> <td>a</td> </tr> <tr id="line2"> <td>b</td> <td>b</td> <td>b</td> <td>b</td> </tr> <tr id="line3"> <td>c</td> <td>c</td> <td>c</td> <td>c</td> </tr> <tr id="line4"> <td>d</td> <td>d</td> <td>d</td> <td>d</td> </tr> <tr id="line5"> <td>e</td> <td>e</td> <td>e</td> <td>e</td> </tr> <tr id="line6"> <td>f</td> <td>f</td> <td>f</td> <td>f</td> </tr> <tr id="line7"> <td>g</td> <td>g</td> <td>g</td> <td>g</td> </tr> <tr id="line8"> <td>h</td> <td>h</td> <td>h</td> <td>h</td> </tr> <tr id="line9"> <td>i</td> <td>i</td> <td>i</td> <td>i</td> </tr> </table> <table id="data1Footer"> <tr id="footer1"> <th> <button type="button" onclick="firstRow();"> << </button> </th> <th> <button type="button" onclick="prevRow();"> < </button> </th> <th> <button type="button" onclick="nextRow();"> > </button> </th> <th> <button type="button" onclick="lastRow();"> >> </button> </th> </tr> </table> </fieldset> </body> </html>
Simplificando ao extremo o carrossel
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Arch Linux - Guia para Iniciantes (0)
Dificuldade para renderizar vídeo no kdenlive (6)
xubuntu sem sons de eventos (3)
Erro ao iniciar serviço samba4 como novo dc em um ambiente com ad [RES... (9)