Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Ext JS / Sencha
Ext JS / Sencha Ext JS / Sencha Forum d'entraide sur les frameworks Ext JS et Sencha. Avant de poster : FAQ ExtJS / Sencha, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/08/2011, 14h35   #1
Invité de passage
 
Inscription : mai 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 5
Points : 1
Points : 1
Par défaut vérifier si la variable est vide

Bonjour à tous

Voici mon problème, je voudrais que des itmes soient masqué si les données sont vide.


Voilà j'ai un panel "location" qui se rempli suivant le client, jusque là ça fonctionne..

Maintenant, je voudrais vérifier si la valeur " forward_accessoire "reçu par le fichier "mysqldata.php" est vide (ou une certaine valeur) si c'est le cas mettre le "hidden : true" autrement "hidden : false".

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var location = new Ext.FormPanel({
	title     : 'location',
	labelWidth: 80, 
        frame:true,        

        items: 
	   [{		
	  xtype: 'textfield',  
          fieldLabel: 'accessoire',  
          width: 150,
          id: 'accessoire',
          readonly:true,
          hidden : false,
          name: 'forward_accessoire'     
	   },{
          xtype: 'textfield',  
          fieldLabel: 'nombre', 
          width: 20,
          name: 'forward_nombre'
	   },{   .....

Appel de la fonction

Code :
1
2
3
4
5
6
7
 
location.load({
          url: 'mysqldata.php',
           params: {
		client: document.getElementById('client').value
          }
}
D'avance merci pour votre aide.
john316 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 17h30   #2
Membre éclairé
 
Avatar de JulienFio
 
Julien Fiorentino
Inscription : novembre 2007
Messages : 201
Détails du profil
Informations personnelles :
Nom : Julien Fiorentino
Âge : 28
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2007
Messages : 201
Points : 336
Points : 336
Bonjour,

Pourquoi ne pas construire les items de ton formulaire en fonction des données reçues justement. Si tu n'as pas de "forward_accessoire" en retour tu ne construit pas l'item correspondant.

Sinon, tu dois pouvoir le cacher comme ceci:
Code :
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
 
var location = new Ext.FormPanel({
	title     : 'location',
	labelWidth: 80, 
        frame:true,        
 
        items: 
	   [{		
	  xtype: 'textfield',  
          fieldLabel: 'accessoire',  
          width: 150,
          id: 'accessoire',
          readonly:true,
          hidden : false,
          name: 'forward_accessoire',
          listeners: {
              render: function (item, opt){
                  if(typeof item.getRawValue() == 'undefined' || item.getRawValue() == ''){
                      item.setVisible(false);
                   }
               }
            }
	   },{
          xtype: 'textfield',  
          fieldLabel: 'nombre', 
          width: 20,
          name: 'forward_nombre'
	   },{   .....

(Non testé)
__________________
Non l'homme ne descend pas du singe, il descend plutôt du mouton..
JulienFio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h27   #3
Invité de passage
 
Inscription : mai 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 5
Points : 1
Points : 1
Citation:
Envoyé par JulienFio Voir le message
Bonjour,

Pourquoi ne pas construire les items de ton formulaire en fonction des données reçues justement. Si tu n'as pas de "forward_accessoire" en retour tu ne construit pas l'item correspondant.
Bonjour,

Merci pour ta réponse, c'est en faite ce que je voudrais faire mais je ne vois pas comment. Peux-tu construire des items en dehors d'un "FormPanel" ?
Car comme je reçois mes données d'un json, je ne voyais pas comment les récupérer autrement que comme ceci!

Peux-tu m'éclairer?
Merci
john316 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h50   #4
Membre éclairé
 
Avatar de JulienFio
 
Julien Fiorentino
Inscription : novembre 2007
Messages : 201
Détails du profil
Informations personnelles :
Nom : Julien Fiorentino
Âge : 28
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2007
Messages : 201
Points : 336
Points : 336
Il y a plusieurs façons de faire.
Soit tu défini un tableau d'items que tu attribut à ton form lors de sa construction:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
var mesItems = new Array();
            var record;
            Ext.each(json.records, function(record) {
                    mesItems.push(Ext.create('Ext.form.Panel', {
                       name: record.name,
                        ...
                    }));
});
 
var location = new Ext.FormPanel({
	title     : 'location',
	labelWidth: 80, 
        frame:true,         
        items: mesItems
});
soit tu fais l'inverse selon si ça t'arrange:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
var location = new Ext.FormPanel({
	title     : 'location',
	labelWidth: 80, 
        frame:true
}); //Je ne spécifie pas les items volontairement
var mesItems = new Array();
            var record;
            Ext.each(json.records, function(record) {
                    mesItems.push(Ext.create('Ext.form.Panel', {
                       name: record.name,
                        ...
                    }));
});
 
if(typeof location.items == "undefined"){
            location.items = mesItems;
        } else {
            location.add(mesItems);
        }
grosso modo ça donnerait quelque chose dans ce genre. L'idée c'est de construire à part ton tableau d'items et ensuite de l'attribuer à ton formulaire
__________________
Non l'homme ne descend pas du singe, il descend plutôt du mouton..
JulienFio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 11h42   #5
Invité de passage
 
Inscription : mai 2004
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 5
Points : 1
Points : 1
Ha ok, mais du coup je fais comment pour récupérer mes données du json? lorsque j'execute :

Code :
1
2
3
4
5
6
7
8
 
 
location.load({
          url: 'mysqldata.php',
           params: {
		client: document.getElementById('client').value
          }
}
Je dois créer un nouveau store avec "Ext.data.JsonStore" ?
john316 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2011, 14h56   #6
Membre éclairé
 
Avatar de JulienFio
 
Julien Fiorentino
Inscription : novembre 2007
Messages : 201
Détails du profil
Informations personnelles :
Nom : Julien Fiorentino
Âge : 28
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2007
Messages : 201
Points : 336
Points : 336
C'est sur le load de ton formulaire que tu récupères les items ?

Si oui, je pense qu'il serait mieux de faire une requête Ajax indépendante, avec ton paramètre client. Et tu traite le retour de cette requête pour construire ton formulaire.
__________________
Non l'homme ne descend pas du singe, il descend plutôt du mouton..
JulienFio est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h15.


 
 
 
 
Partenaires

Hébergement Web