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

WebDev Discussion :

Evénement sur clic dans une colonne d'un champ table


Sujet :

WebDev

  1. #1
    Membre régulier
    Inscrit en
    juillet 2007
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 202
    Points : 95
    Points
    95
    Par défaut Evénement sur clic dans une colonne d'un champ table
    Bonjour,


    Est-il possible de déclencher un événement lors d'un clic sur une colonne précise d'un champ table ?
    Je sais qu'il existe sous Windev la fonction tableinfoXY qui permet de récupérer la ligne et la colonne de la cellule dans laquelle on a cliqué mais je ne trouve pas d'équivalent sous Webdev ?

    J'aimerais obtenir le comportement suivant :
    - Je clique sur une des cellules de la première colonne de ma table -> Filtre de la table en fonction du contenu de cette cellule (Un n° de client)
    - Double Clic sur les cellules des autres colonnes -> Ouverture du détail de l'enregistrement (Cette partie est déjà fonctionnelle)

    Est-ce réalisable ?


    Merci !

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juin 2012
    Messages : 172
    Points : 249
    Points
    249
    Par défaut
    C'est une question que j'ai retournée dans tout les sens. Après plein d'heures de prise de tête, la seule solution que j'ai trouvée c'est en mettant des images dans chaque colonne (dans ton cas ça serait que la première). Ensuite dans le code du clic sur l'image, je passe une variable au nombre de la colonne. En récupérant la ligne en cours et cette variable tu trouves les coordonnées de ta cellule. Encore une fois dans ton cas tu n'auras pas besoin de cette variable car seulement la première colonne est cliquable.

    Mais je déconseille de faire car c'est une source de lenteur par possible. J'ai donc repensé tout le système. De plus si j'ai bien compris c'est du texte que tu as dans cette colonne et je ne suis pas sûr que ça sera compatible avec une image...

    J'espère que cela t'aidera dans ta recherche de solution. En tout cas je serai très intéressé si tu trouves une solution.

  3. #3
    Membre régulier
    Inscrit en
    juillet 2007
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 202
    Points : 95
    Points
    95
    Par défaut
    Il existe apparemment une méthode correspondant à l'équivalent de TableInfoXY sous WebDev.
    La méthode est dispo dans la LST n°81, que je n'ai pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WEB (WEBDEV)
    Récupérer une sélection ou un clic souris dans une table WEBDEV
     
    WW_TableInfoXY : Récupérer une sélection ou un clic souris dans une table WEBDEV
    Il peut être intéressant de récupérer une sélection effectuée par l’internaute ou l’indice de ligne et de colonne d’un champ table correspondant à un clic.
    WINDEV et WINDEV Mobile le permettent grâce à la fonction TableInfoXY.
    L’exemple “WW_TableInfoXY” propose une solution simple pour réaliser l’équivalent de la fonction TableInfoXY en code navigateur.

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juin 2012
    Messages : 172
    Points : 249
    Points
    249
    Par défaut
    Effectivement, il y a bien un exemple de la LST 81 qui propose une solution à ce problème.
    Après avoir testé le projet test, je vous confirme son bon fonctionnement.

    Sans rentrer dans le détail, un code en JS appelé depuis les événements onmousedown, onmouseover et onmouseup de la table permet de récupérer la colonne et la ligne sélectionnées.

    Je vous invite donc à consulter l'exemple pour en savoir d'avantage.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : juin 2006
    Messages : 92
    Points : 61
    Points
    61
    Par défaut Info
    Bonjour,

    pourrais-tu entrer dans le détail ? :-)
    Je ne possède pas cette LST.

    MErci

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    juin 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : juin 2012
    Messages : 172
    Points : 249
    Points
    249
    Par défaut
    Voici le bout de code navigateur après modifications personnelles :

    Code MonTableInfoXY : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    PROCEDURE MonTableInfoXY(LOCAL sAliasTable est une chaîne, evt, sValeurDefaut est une chaîne = "-1;-1")
    LOCAL
    	nNbUnderscore	est un entier
    	nLigne 			est un entier
    	nColonne		est un entier
     
    EXTERNE ElementEnCours
     
    SI evt=Null ALORS
    	//pas d'évènement, valeur par défaut
    	RENVOYER sValeurDefaut
    FIN
    //Récupère le champs qui a déclenché l'évènement
    //IE ?
    SI NavigateurNom()~="Microsoft Internet Explorer" ALORS
    	//Oui
    	ElementEnCours=evt.srcElement
    SINON	
    	ElementEnCours=evt.target
    FIN
     
    //champ trouvé ?
    SI ElementEnCours=Null ALORS
    	//non, donc valeur par défaut
    	RENVOYER sValeurDefaut
    SINON	
    	//recherche de l'éléments le plus bas 
     
    	//info sur "childNodes" : http://help.dottoro.com/ljvaqlwx.php#childNodes
    	//tant qu'il y a des fils		
    	TANTQUE ElementEnCours.children.length>0		
    		//on prends le dernier fils
    		ElementEnCours=ElementEnCours.children[ElementEnCours.children.length]
    	FIN	
     
     
     
    	//de début de l'id	est égale au nom de l'alias de la table ?
    	SI ElementEnCours.id[[A Taille(sAliasTable+"_")]] = sAliasTable+"_" ALORS
    		//Oui
    		//Nb de undescore dans cette partie de id
    		nNbUnderscore = ChaîneOccurrence(ElementEnCours.id,"_")	
    		//Au moins deux underscore (_) ?
    		SI nNbUnderscore >= 2 ALORS				
    			EXTERNE oGetObjetChamp
    			//récupère le champ par rapport au nom de l'alias
    			pclTable est un objet dynamique = oGetObjetChamp(sAliasTable)
    			//converti le n° de la ligne trouvé en valeur absolu
    			nLigne = pclTable.nRelative2Absolue(Val(ExtraitChaîne(ElementEnCours.id,2,"_",DepuisFin))) + 1
    			//N° de colonne
    			nColonne = Val(ExtraitChaîne(ElementEnCours.id,1,"_",DepuisFin))+1		
    			RENVOYER nLigne+";"+nColonne
    		SINON		
    			//pas 2 undescores on a pas trouvé de cellule
    			RENVOYER sValeurDefaut
    		FIN
    	SINON		
    		//non, le nom (alias) de la table n'a pas été trouvé
    		//pour les tables non Ajax		
    		//L'id du parent est le nom de la table et le n° de la ligne ? (<AliasTable>_<NumeroColonne>)
    		//de début de l'id	est égale au nom de l'alias de la table ?
    		SI ElementEnCours.parentNode.id[[A Taille(sAliasTable+"_")]] = sAliasTable+"_" ALORS
    			//Nb de undescore dans cette partie de id
    			nNbUnderscore = ChaîneOccurrence(ElementEnCours.parentNode.id,"_")	
    			//Au moins deux underscore (_) ?
    			SI nNbUnderscore >= 2 ALORS
    				//récupère le champ par rapport au nom de l'alias
    				pclTable est un objet dynamique = oGetObjetChamp(sAliasTable)
    				//converti le n° de la ligne trouvé en valeur absolu
    				nLigne = pclTable.nRelative2Absolue(Val(ExtraitChaîne(ElementEnCours.parentNode.id,2,"_",DepuisFin))) + 1
    				//N° de colonne
    				nColonne = Val(ExtraitChaîne(ElementEnCours.id,1,"_",DepuisFin))+1		
    			SINON
    				//oui, récupération du n° de ligne
    				nLigne = Val(ExtraitChaîne(ElementEnCours.parentNode.id,1,"_",DepuisFin)) 			
    				// le numéro de la colonne, c'est l'index (cellIndex) en cours
    				nColonne=ElementEnCours.cellIndex+1
    			FIN
    			RENVOYER nLigne+";"+nColonne
    		SINON
    			//donc valeur par défaut
    			RENVOYER sValeurDefaut
    		FIN
    	FIN
     
    FIN

Discussions similaires

  1. Réponses: 13
    Dernier message: 14/01/2013, 02h21
  2. Réponses: 1
    Dernier message: 03/11/2010, 12h41
  3. Test sur BOOLEAN dans une colonne de SELECT
    Par genamiga dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/11/2009, 19h29
  4. Réponses: 2
    Dernier message: 01/10/2009, 18h00
  5. SELECT sur doublons dans une colonne
    Par vador972 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/01/2008, 15h21

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