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 :

Set ? Parameter ? from javascript


Sujet :

Cognos

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Par défaut Set ? Parameter ? from javascript
    problème à l'origine: Je voulais créer trois prompt en cascade qui ne force pas la page à ce charger entre chaque sélection.

    Solution trouvé:Gérer l'effet cascade manuellement avec le javascript. Bien que mon code ne soit pas identique, mon site de référence est le suivant:
    http://www.ibm.com/developerworks/da...n/page583.html

    Nouveau problème:Les ?parametres? que mes prompts doivent modifier ne sont pas affecté par mes prompts une fois qu'ils ont été modifier par le script.

    Question: Comment dois-je faire pour modifier mes ?parametres? manuellement par JavaScript? J'ai lu qu'il était possible d'y accéder par p_<ParameterName> mais j'ai pas réussi à le faire fonctionner.

    Exemple du code que j'ai asseillé: alert(p_Name);

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Par défaut
    Citation Envoyé par soulmed Voir le message
    problème à l'origine: Je voulais créer trois prompt en cascade qui ne force pas la page à ce charger entre chaque sélection.

    Solution trouvé:Gérer l'effet cascade manuellement avec le javascript. Bien que mon code ne soit pas identique, mon site de référence est le suivant:
    http://www.ibm.com/developerworks/da...n/page583.html

    Nouveau problème:Les ?parametres? que mes prompts doivent modifier ne sont pas affecté par mes prompts une fois qu'ils ont été modifier par le script.

    Question: Comment dois-je faire pour modifier mes ?parametres? manuellement par JavaScript? J'ai lu qu'il était possible d'y accéder par p_<ParameterName> mais j'ai pas réussi à le faire fonctionner.

    Exemple du code que j'ai asseillé: alert(p_Name);
    J'ai découvert que je n'ai pas le problème quand j'ouvre le rapport dans Firefox. Il semblerait que le bug provienne de Internet Exploreur. J'aurais besoin de savoir comment le browser influence le passage de parametre mais surtout de savoir comment contourné ce bug.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Par défaut Je progresse...
    Mes parametres fonctionne maintenant. Mon trouble était dans l'ordre que mon script s'exécutait. Mon dernier petit bug qu'il me reste à résoudre pour le bon fonctionnement de l'application c'est la persistance de l'information. Je m'explique:

    Sur 3 dropdownlist, 2 sont reconstuit par mon script. Le premier (généré par Cognos) garde la valeur choisit par l'utilisateur une fois le reprompt fait. Toutefois, les 2 autres (reconstuit par mon script) revienne à la valeur All (qui est l'entête de ma liste).

    Sauriez-vous de quelle fasson je peut allé chercher la valeur d'un ?parametre? afin de l'attribuer à mon selectedValue de mon prompt?

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Septembre 2011
    Messages : 7
    Par défaut Solution :
    J'ai fini par y arriver.... J'ai résolut mon problème de persistance avec un hidden textbox. Voici le code complet et functionnel. Si vous trouvez moyen de l'optimiser, S.V.P. faite comme moi et prenez 2 minute pour partager l'info.

    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
    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
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    	/** Get les prompt et set la propriété name **/
     
    	var type = getFormWarpRequest()._oLstChoiceslbType;
    	type.name = "type";
    	var family = getFormWarpRequest()._oLstChoiceslbFamily;
    	family.name = "family";
    	var name = getFormWarpRequest()._oLstChoiceslbName;
    	name.name = "name";
    	var ph = getFormWarpRequest()._oLstChoicesProductHierarchy;
    	var param = getFormWarpRequest()._textEditBoxParameter;
     
    	/** Set les event listiner **/
     
    	type.onchange = function(){ repopulateFromType(); }
    	family.onchange = function(){ repopulateFromFamily(); }
    	name.onchange = function(){ repopulateFromName(); }
     
    	/** Function Première **/
     
    	function  repopulateFromType(){	// Function appeler par un changement de type 
    		validIndex(type); // Set le selected value a All lorsque la ligne pointillé est choisit
    		cascadeEffect();
    		rebuildPrompt(family);	// Reconstruit le prompt family à partir d'un type de produit
    		rebuildPrompt(name);
    		setProperty()
    	}
    	function  repopulateFromFamily(){	// Function appeler par un changement de family
    		validIndex(family); // Set le selected value a All lorsque la ligne pointillé est choisit
    		cascadeEffect();
    		rebuildPrompt(name);// Reconstruit le prompt name à partir d'une famille de produit
    		setProperty()
    	}
    	function repopulateFromName(){	// Function appeler par un changement de name
    		validIndex(name);
    		setProperty()
    	}
     
    	/** Sous Function **/
     
    	function cascadeEffect(){ // Disable / enable les prompts pour créer l'effet cascade
    		if (type.selectedIndex != 0){
    			family.disabled = false;
    		} else {
    			family.selectedIndex = 0;
    			family.disabled = true;
    			name.selectedIndex = 0;
    			name.disabled = true;
    		}
    		if (family.selectedIndex != 0){
    			name.disabled = false;
    		} else {
    			name.selectedIndex = 0;
    			name.disabled = true;
    		}
    	}
    	function getArray(arg){// Crée un tableau contenant les name ou les family d'un produit donné
    		var arr = [];
    		var start;
    		var end;
     
    		for (var  i = 0; i < ph.length; i++){
    			if (arg == "name"){
    				start = ph[i].value.indexOf("~",0) + 1;
    				end = ph[i].value.indexOf("¯",0);
    				if(ph[i].value.substring(start ,end ).trim() == family[family.selectedIndex].value.trim()){
    					arr.push(ph[i].value.substring(ph[i].value.indexOf("¯",0) + 1,ph[i].length).trim());
    				}
    			} 
    			if (arg == "family"){
    				start = 0;
    				end = ph[i].value.indexOf("~",0);
    				if (ph[i].value.substring(start ,end ).trim() == type[type.selectedIndex].value.trim()){
    					arr.push(ph[i].value.substring(ph[i].value.indexOf("~",0) + 1,ph[i].value.indexOf("¯",0)).trim());
    				}
    			}
    		}
    		return arr;
    	}
    	function rebuildPrompt(ctrl){	// Reconstruit la liste des valeurs du prompt passé
    		ctrl.selectedIndex = -1;
    		ctrl.length = 0;
     
    		var arr = getArray(ctrl.name); //Crée un tableau contenant les family d'un type de produit donné
    		arr= removeDbles(arr);
     
    		ctrl.options[0] = new Option("All","");
    		ctrl.options[1] = new Option("---------------------------","");
     
    		for (var j=0 ; j < arr.length ; j++){
    			if (arr[j] != undefined && arr[j] !=null && arr[j] != ""){ 
    				ctrl.options[j+2] = new Option(arr[j],arr[j]);
    			}	
    		}
    	}
    	function setPromptValues(){ // Redonne la value des selectedValue au dropdownlists après le reprompt
    		var f = param.value.substring(0,param.value.indexOf("~",0));
    		var n = param.value.substring(param.value.indexOf("~",0) + 1,param.value.lenght);
     
    		if (f != ""){
    			for (var i = 0; i < family.length ; i++){
    				if (family[i].value.trim() == f){
    					family.selectedIndex = i;
    				}
    			}
    			if (n!= ""){
    				for (var j = 0; j < name.length ; j++){
    					if (name[j].value.trim() == n){
    						name.selectedIndex = j;
    					}
    				}
    			}
    		}
     
    	}
    	function setProperty(){ // met les selectedValues de family et name dans param pour la fonction setPromptValues()
     
    		var str;
    		if(family.selectedIndex != 0){
    			if(name.selectedIndex != 0){
    				str = family[family.selectedIndex].value+"~"+name[name.selectedIndex].value;
    			}
    			else{
    				str = family[family.selectedIndex].value+"~";		
    			}
    		}
    		else{
    			str = "";		
    		}
    		param.value = str;
    	}
    	function validIndex(ctrl){ // Set le selected value a All lorsque la ligne pointillé est choisit et fill param
    		if (ctrl.selectedIndex == 1){
    			ctrl.selectedIndex = 0
    		}
    	}
     
    	/** Function Utilitaire **/
     
    	String.prototype.trim = function() {	// Élimine les espaces vide au bout du String
    		return this.replace(/^\s+|\s+$/g,"");
    	}
    	function removeDbles(arr){ 	//  Élimine les doublons et ordonne un array
    		var retour = [];
    		var temp = arr.sort();
    		for (j = temp.length -1; j >= 0 ; j--){
    			if (temp[j] !=  temp[j-1]){
    				retour.push(temp[j]);
    			}
    		}
    		return retour.sort();
    	}
     
    	/** Onload **/
     
    	rebuildPrompt(family);
    	setPromptValues();
    	cascadeEffect();

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

Discussions similaires

  1. Problème avec SET PARAMETER
    Par Stephane1971 dans le forum SAP
    Réponses: 2
    Dernier message: 04/12/2014, 10h26
  2. Réponses: 0
    Dernier message: 09/04/2014, 17h46
  3. [Struts 2/dojo] recuperer l'heure from javascript
    Par ensemien dans le forum Struts 2
    Réponses: 1
    Dernier message: 22/05/2013, 09h13
  4. Update Set Select From
    Par lamen0031 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 23/09/2011, 14h16

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