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 :

Formulaire avec deux combobox dynamiques liées


Sujet :

Ext JS / Sencha

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Alimentation

    Informations forums :
    Inscription : février 2017
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Formulaire avec deux combobox dynamiques liées
    bonour, j'ai besoin de votre aide
    je travaille actuellement sur un formulaire en ExtJs qui contient deux champs de type 'combo'.

    Mon combo 1 est construit à partir de données Json et s'affiche correctement dans mon formulaire.
    Mon combo 2 est par défaut vide, et son contenu dépend de la valeur sélectionnée dans le combo 1, et est également construit à partir de données Json.

    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
     var promoStore = Ext.create('Ext.data.JsonStore', {
      storeId: 'promos',
      proxy: {
        type: 'ajax',
        url: 'country.php',
        reader: {
          type: 'json',
          root: 'rows',
          autoLoad: true
        }
      },
      fields: [
        'id_countri',
        'nom_country'
      ]
    });
    var promosStore1 = Ext.create('Ext.data.JsonStore', {
      storeId: 'promos',
      proxy: {
        type: 'ajax',
        url: 'region.php',
        reader: {
          type: 'json',
          root: 'rows',
        }
      },
      fields: [
        'id_region',
        'nom_region'
      ]
    });
    //Créez maintenant la liste déroulante qui utilise le magasin précédent comme source pour son contenu :
    var promosCombo = Ext.create('Ext.form.ComboBox', {
      id: 'promosCombo',
      fieldLabel: 'Arrondissement',
      triggerAction: 'all',
      emptyText: 'Choisir une arrondissement',
      editable: false,
      store: promosStore,
      mode: 'local',
      valueField: 'nom_country',
      displayField: 'id_country',
      renderTo: Ext.getBody(),
    });
    var promosCombo1 = Ext.create('Ext.form.ComboBox', {
      id: 'promosCombo1',
      fieldLabel: 'Fokontany',
      triggerAction: 'all',
      emptyText: 'Choisir un fokontany',
      editable: false,
      store: promosStore1,
      mode: 'local',
      valueField: 'nom_region',
      displayField: 'id_region',
      renderTo: Ext.getBody()
    });
    var promosSelectionForm = Ext.create('Ext.form.Panel', {
      id: 'promosSelection',
      frame: true,
      width: '100%',
      buttonAlign: 'center',
      labelAlign: 'left',
      labelWidth: 70,
      items: [
        promosCombo,
        promosCombo1
      ],
      buttons: [
        submitButton
      ],
      renderTo: Ext.getBody()
    });
    //voici mon php

    Code php : 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
    <?php
     
            $dbconn = pg_connect("host=localhost dbname=mon_pg user=postgres password=dina");
     
            $requete = "SELECT id_region , nom_region  FROM region";
     
            $result = pg_query($requete);
     
            while ($row = pg_fetch_object($result)) {
                                                         $json_rows[] = $row;
                                                    }
     
            $header = '{success: true, rows: ';
     
            $footer = '}';
     
            echo $header.json_encode($json_rows).$footer;
     
    ?>

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    4 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 4 176
    Points : 8 640
    Points
    8 640
    Par défaut
    on n'écrit jamais de json avec des String (quelque soit le langage)

    cette règle t'évitera de nombreux déboire
    Code php : 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
    <?php
     
            $dbconn = pg_connect("host=localhost dbname=mon_pg user=postgres password=dina");
     
            $requete = "SELECT id_region , nom_region  FROM region";
     
            $result = pg_query($requete); 
     
            while ($row = pg_fetch_object($result)) {
                                                         $json_rows[] = $row;
                                                    }
            $result = array();
            $result['sucess'] = true; 
     
            $result['rows']=$json_rows;
     
            echo json_encode($result)
    de même il est déconseillé de mettre le ?> à la fin du fichier.

    quant à la liaison entre combo tu as un exemple ici
    http://technopaper.blogspot.fr/2011/...in-ext-js.html

    tout est en fait dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    listeners: {
        'select' : function(field,nval,oval) {
         cityStore.load({
                    params: {'id': nval.data.value }
                 });
    le combo country contient un listener qui à chaque changement recherche les données du datastore city
    il n'y a absolument rien à faire pour l'affichage
    dans ExtJS dès que le datastore change tous les éléments qui en dépendent sont notifiés et se mettent à jour.

    A+JYT

Discussions similaires

  1. ExtJs - Formulaire avec 2 combobox dynamiques liées
    Par flilou dans le forum Ext JS / Sencha
    Réponses: 5
    Dernier message: 08/03/2013, 11h50
  2. [AJAX] Formulaire avec deux listes dynamiques liées
    Par gotcha5832 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/03/2007, 10h40
  3. Réponses: 8
    Dernier message: 13/03/2006, 17h37
  4. Formulaire avec deux boutons
    Par Oberown dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 17h06
  5. Réponses: 10
    Dernier message: 10/06/2004, 16h20

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