IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Syncroniser la largeur des en-t�tes de 2 tables diff�rentes


Sujet :

JavaScript

  1. #1
    R�dacteur
    Avatar de Erakis
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par d�faut Syncroniser la largeur des en-t�tes de 2 tables diff�rentes
    Bonjour � tous,

    J'ai besoin de construire une table qui permet de scroller tout en gardant le header fix. La meilleure solution � mon avais serait d'utiliser 2 tables, une pour les en-t�te et l'autres pour les cellules du body.

    Ma table doit �tre �lastique et son contenu est dynamique, alors il m'est pas possible de fixer les colonnes � des valeurs fixes comme des px ou % avec un parent d'une largeur fixe.

    Le meilleure exemple que j'ai trouv� est celui-ci : jQueryMobile Table-IScroll/

    Cet exemple fonctionne parfaitement, mais : Je devrai utiliser ce princpe pour diff�rentes tables dont certainnes ont des en-t�te muni de colspan, parfois 2 �tages, parfois 3. Dans d'autres tables, je peux avoir des cellule qui consomme toute la ligne (colspan="table cell count").

    Voil�, je cherche � am�liorer la fonction qui permet de syncroniser la largeur des en-t�tes de la premi�re table avec celle de la deuxi�me. Dans l'exemple cit� pr�cedemment voici ce qui est utilis� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    var headerColumns = $('#positions-table-header tr th');
    var bodyColumns = $('#positions-table-body tr:first td');
    for (var i = 0; i < headerColumns.length; i++) {
          $(headerColumns[i]).width($(bodyColumns[i]).width());
    }
    Pour une table sans colspan, �a fonctionne � merveille. Imaginons maintenant que la table � 2 rang�s d'en-t�te et poss�de aussi des tr contenant qu'une seule cellule (colspan=7) ayant une class nomm� trMyGroup.
    • La premi�re rang� poss�de 3 colonnes (colspan=3, colspan=2, colspan=2)
    • La deuxi�me rang� poss�de 7 colonnes (colspan=1)


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
                                            En-tête                 En-tête
    En-tête    En-tête    En-tête     En-tête     En-tête      En-tête    En-tête
    Voici ce que j'ai fait pour adapt� le tout :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    var headerColumns = $('#positions-table-header tr:nth-child(2) th');
    var bodyColumns = $('#positions-table-body tr:not(.trMyGroup) td');
    for (var i = 0; i < headerColumns.length; i++) {
          $(headerColumns[i]).width($(bodyColumns[i]).width());
    }
    Voil� �a fonctionne super bien

    Mais y aurait-il un moyen d'automatiser un peu plus ce code de syncronisation sans que j'aie � le r�p�ter et changer les filtres jQuery pour qu'il fonctionne bien ? En ce sens, je veux dire un code qui fonctionnerait autant quand j'ai pas de colspan que quand j'en ai. Sachant que les deux tables auront TOUJOURS le m�me nombre de colonne au finale.

    Je ne sais pas trop comment m'y prendre c�t� aglo alors si quelqu'un a d�j� fait face � cet algo, je lui en serait reconnaissant.

    PS : Je ne peux pas utiliser la dataTable, je l'utilisait avant, mais � cause de certaines limitations elle � �t� retir�. Du coup j'ai jeter un coup d'oeil au code source afin de voir comment il s'y prenne pour syncroniser la taille des colonnes de leur 2 tables, y honn�tement j'y comprend pas grand chose.

    Merci

  2. #2
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    C'est davantage un probl�me CSS que JavaScript. Pour moi, �a peut se faire simplement avec position:fixed en CSS.

    Une petite recherche google et j'ai trouv� �a : http://salzerdesign.com/test/fixedTable.html

  3. #3
    R�dacteur
    Avatar de Erakis
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �lectronique et micro-�lectronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par d�faut
    Bonjour Sylvain,

    J'ai consult� votre lien, merci c'est int�ressant. On peut aussi arriver � faire similaire qu'avec 2 tables en layout fixed. Cependant, d'ordre g�n�ral j'aimerais r�aliser cette artifice avec Javascript.

  4. #4
    R�dacteur/Mod�rateur

    Avatar de SpaceFrog
    Homme Profil pro
    D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activit� : D�veloppeur Web Php Mysql Html Javascript CSS Apache - Int�grateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Pr�sident du CCMPTP (Comit� Contre le Mot "Probl�me" dans les Titres de Posts)
    Deux r�gles du succ�s: 1) Ne communiquez jamais � quelqu'un tout votre savoir...
    Votre post est r�solu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de D�veloppez !

Discussions similaires

  1. R�ponses: 2
    Dernier message: 13/05/2013, 11h48
  2. R�ponses: 0
    Dernier message: 06/10/2009, 13h02
  3. R�ponses: 2
    Dernier message: 30/04/2009, 12h46
  4. [MySQL] Filtrer des donn�es venant de 2 tables diff�rentes
    Par Shinoda00 dans le forum PHP & Base de donn�es
    R�ponses: 5
    Dernier message: 05/03/2009, 21h05
  5. R�ponses: 3
    Dernier message: 11/07/2005, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo