-
Message publié le jeudi 18 février 2010 - 21h18 par malabarbe.
-
Bonsoir à tous,
J'ai fait un tri dynamique de tableau HTML avec le DOM
Mon tableau s'affiche dans un div avec un overflow
Quand le nombre de lignes du tableau dépasse la hauteur
imposée par le div, en jouant avec l'ascensseur la ligne
d'entète disparait dans le haut de la liste, et par le
fait on ne vois plus le nom des colonnes et donc plus
de possibilité d'effectuer un tri.
Je vous propose mon source pour que vous puissiez me
dire si ce que je voudrais faire est possible et si oui, comment ?
Mon code :
<HTML>
<STYLE>
#trier { background-color:white; color:black; border-collapse:collapse; BORDER:white 1px solid; FONT:12 Arial; TEXT-ALIGN:center }
#trier TR { background-color:#ffefd5 }
#trier .title { background-color:#bf2b2f; FONT:14 Arial; color:#ffffff; font-weight:bold }
SPAN { FONT:bold 12 Arial; CURSOR:pointer }
BODY { background-color:#FFF5E5 }
#trier TD { BORDER:white 1px solid; }
SPAN { FONT:bold 12 Arial; CURSOR:pointer }
BODY { background-color:#FFF5E5;}
</STYLE>
<SCRIPT>
var index
function sort_int(p1,p2) { return p1[index]-p2[index]; } //fonction pour trier les nombres
function sort_char(p1,p2) { return ((p1[index]>=p2[index])<<1)-1; } //fonction pour trier les strings
function TableOrder(e,Dec) //Dec= 0:Croissant, 1:Décroissant
{ //---- Détermine : oCell(cellule) oTable(table) index(index cellule) -----//
var FntSort = new Array()
if(!e) e=window.event
for(oCell=e.srcElement?e.srcElement:e.target;oCell.tagName!="TD";oCell=oCell.parentNode); //determine la cellule sélectionnée
for(oTable=oCell.parentNode;oTable.tagName!="TABLE";oTable=oTable.parentNode); //determine l'objet table parent
for(index=0;oTable.rows[0].cells[index]!=oCell;index++); //determine l'index de la cellule
//---- Copier Tableau Html dans Table JavaScript ----//
var Table = new Array()
for(r=1;r<oTable.rows.length;r++) Table[r-1] = new Array()
for(c=0;c<oTable.rows[0].cells.length;c++) //Sur toutes les cellules
{ var Type;
objet=oTable.rows[1].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
if(objet.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) { FntSort[c]=sort_char; Type=0; } //date jj/mm/aaaa
else if(objet.match(/^[0-9£?$\.\s-]+$/)) { FntSort[c]=sort_int; Type=1; } //nombre, numéraire
else { FntSort[c]=sort_char; Type=2; } //Chaine de caractère
for(r=1;r<oTable.rows.length;r++) //De toutes les rangées
{ objet=oTable.rows[r].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
switch(Type)
{ case 0: Table[r-1][c]=new Date(objet.substring(6),objet.substring(3,5),objet.substring(0,2)); break; //date jj/mm/aaaa
case 1: Table[r-1][c]=parseFloat(objet.replace(/[^0-9.-]/g,'')); break; //nombre
case 2: Table[r-1][c]=objet.toLowerCase(); break; //Chaine de caractère
}
Table[r-1][c+oTable.rows[0].cells.length] = oTable.rows[r].cells[c].innerHTML
}
}
//--- Tri Table ---//
Table.sort(FntSort[index]);
if(Dec) Table.reverse();
//---- Copier Table JavaScript dans Tableau Html ----//
for(c=0;c<oTable.rows[0].cells.length;c++) //Sur toutes les cellules
for(r=1;r<oTable.rows.length;r++) //De toutes les rangées
oTable.rows[r].cells[c].innerHTML=Table[r-1][c+oTable.rows[0].cells.length];
}
</SCRIPT>
<body>
<p> </p>
<p> </p>
<center>
<div align="center" style="height:100px; width:340px; overflow:auto; font-family: Times New Roman; font-size: 10px">
<table id=trier align="center">
<tr class=title>
<td>Chevaux <span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
<td>Date <span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
<td>Age <span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
<td>Ind <span onclick=TableOrder(event,1)>▼</span><span onclick=TableOrder(event,0)>▲</span></td>
</tr>
<tr><td style="text-align: left"><a id="aff2" class="tt2"> TORNADE DU
DECLIC </a></td><td> 20/03/2005 </td><td>4</td><td id=money>127.1 </td></tr>
<tr><td style="text-align: left"><a id="aff3" class="tt2"> PITCHPIN DES
BOIS</a></td><td> 22/02/2005 </td><td> 3</td><td id=money>127.8</td></tr>
<tr><td style="text-align: left"><a id="aff4" class="tt2"> RENATE DES
LANDES</a></td><td> 23/02/2005 </td><td>7</td><td id=money>128.2</td> </tr>
<tr><td style="text-align: left"><a id="aff5" class="tt2"> MIGUEL DES
VOLOS</a></td><td> 23/05/2005 </td><td>6</td><td id=money>129.6</td></tr>
<tr><td style="text-align: left"><a id="aff6" class="tt2"> NIKY DU
DONJON</a></td><td> 23/02/2006 </td><td>5</td><td id=money>131.3</td></tr>
<tr><td style="text-align: left"><a id="aff6" class="tt2"> NIKY DU
GOLF</a></td><td> 23/02/2005 </td><td>5</td><td id=money>128.6</td></tr>
</table>
</div>
</body>
</html>
-
Message publié le jeudi 18 février 2010 - 22h05 par sprayart.
-
Bonsoir,
tu places 2 div:
un div avec l'entête
un div avec les lignes A+
-
Message publié le samedi 20 février 2010 - 23h14 par coeos. coeos.pro
-
+1 pour sprayart, la solution parait si simple, tu avais "la tête dans le guidon" et tu n'y avais pas pensé ?
-
Message publié le dimanche 21 février 2010 - 12h53 par malabarbe.
-
Oui, mais si je sépare les Div ou les entêtes,
les tris ne se font plus.
-
Message publié le dimanche 21 février 2010 - 14h46 par nours312.
nours312.com -- je ne suis pas codeur bénévol, mais j'aide gratos ;)
-
ben vu que le tri se fait en JavaScript, il te suffirai de modifier un peu cette fonction pour que cela fonctionne !!
-
Message publié le dimanche 21 février 2010 - 15h19 par coeos. coeos.pro
-
En effet, le JS permet le tri du tableau "en cours", le tableau qui contient les liens qui activent le JS, il faut séparer l'entête du contenu, et dans le JS préciser que le tri se fait sur le tableau suivant, je connais mal le JS je peut pas te renseigner plus désolé
-
Message publié le dimanche 21 février 2010 - 17h50 par malabarbe.
-
Ok nours312..com,
C'est justement la ou je coince !!!
-
Message publié le dimanche 21 février 2010 - 18h27 par nours312.
nours312.com -- je ne suis pas codeur bénévol, mais j'aide gratos ;)
-
ben, je pourrais bien te filer un coup de main, mais si tu piges rien en JS, essaye de voir avec son auteur pour qu'il te file un coup de main !... :D
dans l'état, je le trouve très peu propre pour me permettre de le reprendre ^^ :D
Si tu ne t'en sort pas post sur le fofo JS, ce sera plus adéquate !
Si le pb à l'origine de ce post est résolu, penses à l'indiquer ;)
@+
-
Message publié le dimanche 21 février 2010 - 18h53 par malabarbe.
-
Ok, mème si tu touve le script (peu propre),
Pourrai-tu m'aider sur un point précis ?
-
Message publié le dimanche 21 février 2010 - 19h24 par malabarbe.
-
-
Message publié le dimanche 21 février 2010 - 21h06 par nours312.
nours312.com -- je ne suis pas codeur bénévol, mais j'aide gratos ;)
-
Ben ouais, bien sur, mais sur le fofo JS stp ... ce sera mieux :D