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

Cognos Discussion :

[Report Studio C10] afficher/masquer des lignes de tableau avec un bouton


Sujet :

Cognos

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut [Report Studio C10] afficher/masquer des lignes de tableau avec un bouton
    Bonjour,

    Je cherche à afficher des lignes de détail d'un tableau à l'aide d'icônes + et - que je mettrais dans une case précédente de mon tableau.
    J'ai réussi a afficher ou masquer mes lignes en fonction d'une variable.
    J'arrive à modifier cette variable à l'aide d'un invite de sélection de valeurs.
    J'aimerais modifier la variable à l'aide d'un bouton (enfin d'une image).

    Est-ce possible?

    Gildas

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Réussi
    Bon, j'ai trouvé la solution; même si elle n'a rien de simple:


    Le principe:
    J'ai un invite de sélection de valeur avec 2 valeurs statiques à true et false.
    La valeur de cet invite est récupérée dans une variable booléenne.
    en fonction de la valeur de la variable booléenne, mes lignes sont affichées ou masquées.
    J'ai ajouté dans mon tableau un code html qui affiche une image + ou - (en fonction aussi de ma variable) et qui appelle un script qui modifie la valeur de mon invite.



    J'ai placé tout en haut de mon rapport le script suivant:
    Code : 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
     
    <script language="javascript">
    function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
     
        var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
        var arrReturnElements = new Array();
        var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue) : null;
     var oCurrent;
     
        var oAttribute;
        for(var i=0; i<arrElements.length; i++){
        	oCurrent = arrElements[i];
        	oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
        	if(typeof oAttribute == "string" && oAttribute.length > 0){
    	        if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                	    arrReturnElements.push(oCurrent);
    	        }
    	    }
    	}
        return arrReturnElements;
    }
     
    function etendre(nomBloc,val){
    	var theSpan = getElementsByAttribute(document,"*","lid",nomBloc);
    	var inpt;
    	for(var j=0; j< theSpan.length; j++){
    		var inputs = theSpan[j].getElementsByTagName("input");
    		for (var i=0; i<inputs.length;i++){
    			var myInput = inputs[i];
    			if(myInput.getAttribute("Value")==val){
    				inpt = myInput;
    			}
    		}
    	}
    	inpt.click()
    }
     
    </script>
    La premiere fonction permet de récupérer n'importe quel objet en fonction d'un de ses attributs.
    Elle sert à récupérer l'invite.
    La seconde fonction est celle appelée par le bouton.
    Elle récupèrere les options de l'invite, en sélectionne une et l'active.

    en suite je place entre 2 balises html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div style="display:none">
    un block nommé monBloc
    dans lequel je place une invite de selection de valeurs avec les attributs suivants:
    requis : oui
    zone de sélection multiple : non
    interface : groupe de cases d'options
    soumission automatique : oui
    parametre : lignes_visible

    j'ai créé une variable booléenne afficher_lignes avec comme expression ParamValue('lignes_visible')='true'

    Dans mon tableau, dans la ligne qui doit contrôler l'affichage des autres lignes, j'ai créé les deux elements suivants:
    bloc : variable de style : afficher_lignes , type de zone : inline et none quand afficher_lignes est à true
    à l'intérieur l'élément html suivant : <img src="monImagePlus" onclick="etendre('monBloc','true');"/>
    puis
    bloc : variable de style : afficher_lignes , type de zone : inline et none quand afficher_lignes est à false
    à l'intérieur l'élément html suivant : <img src="monImageMoins" onclick="etendre('monBloc','false');"/>

    Et bien sûr, les lignes que je veux afficher ou masquer ont en variable de style : afficher_lignes et en type de zone none quand afficher_ligne est à false.

  3. #3
    Membre habitué
    Homme Profil pro
    Indépendant spécialiste Cognos/Essbase
    Inscrit en
    Août 2008
    Messages
    384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant spécialiste Cognos/Essbase
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2008
    Messages : 384
    Points : 193
    Points
    193
    Par défaut
    A moins de ne pas avoir compris ce que vous vouliez faire, moi j'ai une solution beaucoup plus simple :

    • vous créez une invite de type bouton radio dans laquelle vous positionnez 2 valeurs : afficher/cacher. Vous titrez cette invite pour l'utilisateur "Afficher/Cachez les lignes du tcd"
    • vous créez une variable qui teste la valeur utilisée que ramène le paramètre de cette invite. Si votre invite a pour paramètre P_AffSchow alors => if(Paramvalue='show') then ('show') else ('hide')
    • dans votre page de rapport, vous créez un bloc conditionnel et vous lui affectez comme variable de bloc celle que vous venez de créer. Vous allez avoir 2 blocs qui répondront au test de votre varaible
    • dans chaque bloc vous placez une Cc de votre tcd. Dans le bloc qui test 'show' votre tcd sans supprimer aucune ligne
    • Dans le bloc qui test 'hide' votre tcd pour lequel vous avez positionné l'option de suppression des lignes/colonnes (Cf pj pour l'icône) a lignes seulement


    Et voilà. Pas besoin de surchargé le rapport cognos d'un javascript lourd pour une fonctionnalité qu'il embarque nativement.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher et masquer des lignes de tableau avec IE8
    Par horkets dans le forum jQuery
    Réponses: 6
    Dernier message: 24/08/2011, 15h25
  2. Afficher/masquer des lignes dans un tableau hiérarchique
    Par linou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/06/2009, 11h58
  3. Afficher/Masquer des lignes de tableaux
    Par mLk92 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/10/2007, 18h28
  4. Afficher/Masquer des lignes de tableaux
    Par MortyDeath dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/08/2007, 10h22
  5. Liste déroulante : afficher/masquer des lignes
    Par arxpression dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/08/2006, 16h50

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