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

Ext JS / Sencha Discussion :

vérifier si la variable est vide


Sujet :

Ext JS / Sencha

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 6
    Points
    6
    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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    location.load({
              url: 'mysqldata.php',
               params: {
    		client: document.getElementById('client').value
              }
    }
    D'avance merci pour votre aide.

  2. #2
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    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 : 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
     
    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..

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    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

  4. #4
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    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 : 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
     
    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 : 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
     
    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..

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Ha ok, mais du coup je fais comment pour récupérer mes données du json? lorsque j'execute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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" ?

  6. #6
    Membre actif Avatar de JulienFio
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    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..

Discussions similaires

  1. [SQL] affecter la valeur SQL NULL si la variable est vide
    Par marie4449 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/03/2007, 18h44
  2. Réponses: 2
    Dernier message: 21/02/2007, 10h27
  3. Réponses: 3
    Dernier message: 16/10/2006, 15h07
  4. Tester si une variable est vide
    Par christel1982 dans le forum ASP
    Réponses: 13
    Dernier message: 13/09/2006, 11h01
  5. [Tableaux] Vérifier si un champ est vide !
    Par Tr@nkill dans le forum Langage
    Réponses: 9
    Dernier message: 16/05/2006, 16h11

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