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 :

Accéder aux données d'un data.Store


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Analyste Exploitation
    Inscrit en
    Janvier 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste Exploitation

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5
    Par défaut Accéder aux données d'un data.Store
    Bonjour

    Je débute dans l'utilisation de ExtJS 4.

    Je voudrais remplir un champ TextField avec les données d'un data Store.

    Voici le code javascript
    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
     
    var userStore;
    var test;
     
    Ext.require('Ext.data.Store');
     
    Ext.define('User', {
        extend: 'Ext.data.Model',
        fields: [
            {name: 'id', type: 'int'},
            {name: 'name', type: 'string'}
        ]
    });
     
    Ext.onReady(function() { 
        Ext.QuickTips.init();
     
    userStore = Ext.create('Ext.data.Store', {
            autoLoad: true,
            fields: ['id','name'],
            proxy: {
                type: 'ajax',
                url: 'users.json',
                reader: {
                    type: 'json',
                    root: 'users',
                    successProperty: 'success'
                }
            }
        });
     
    test = Ext.create('Ext.form.field.TextArea',{
       renderTo: Ext.getDom('test'),
       name: 'objet_detail_contact',
       id: 'objet_detail_contact',
       autoScroll: 'auto',
       width: 400,
       height: 100,
       anchor: '100%',
       readOnly: true,
       value: userStore.getAt(0).get('name')
    });
     
    });
    Le fichier user.json
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {
        success: true,
        users: [
            {id: 1, name: 'Ed'},
            {id: 2, name: 'Tommy'}
        ]
    }
    J'ai le message suivant : userStore.getAt(0) is undefined
    En regardant la documentation la méthode getAt existe pour l'objet Ext.data.Store.

    Je ne vois pas mon erreur.

    Merci d'avance.

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    sauf que lorsque ton champs est créé le datastore n'est probablement pas prêt.

    tu crée ton champs vide.
    il faut utiliser l'événement "load" qui est lancé lorsque les données sont disponibles

    tu crée ensuite ton datastore avec un listener sur cet événement
    dans le listener tu remplit ton champ

    A+JYT

  3. #3
    Nouveau membre du Club
    Profil pro
    Analyste Exploitation
    Inscrit en
    Janvier 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste Exploitation

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5
    Par défaut
    Je comprends mieux le problème.

    Il faut que je fasse comme ca plutot :
    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
     
    var userStore;
    var test;
     
    Ext.require('Ext.data.Store');
     
    Ext.define('User', {
        extend: 'Ext.data.Model',
        fields: [
            {name: 'id', type: 'int'},
            {name: 'name', type: 'string'}
        ]
    });
     
    Ext.onReady(function() { 
        Ext.QuickTips.init();
     
    userStore = Ext.create('Ext.data.Store', {
            autoLoad: true,
            fields: ['id','name'],
            proxy: {
                type: 'ajax',
                url: 'users.json',
                reader: {
                    type: 'json',
                    root: 'users',
                    successProperty: 'success'
                }
            },
            listeners: {
                load: { fn: function(){ //Chargement du textarea } }
            }
        });

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    oui c'est ça
    A+JYT

  5. #5
    Nouveau membre du Club
    Profil pro
    Analyste Exploitation
    Inscrit en
    Janvier 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste Exploitation

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5
    Par défaut
    J'ai réussi par contre je voudrais passer au niveau du dessus en utilisant alimentant les données du DataStore avec un base de données et utiliser le filtre du dataStore.

    J'ai donc utilisé le code 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    var BaseReclamation;
    var test;
    var tmp;
     
    Ext.require('Ext.data.Store');
    Ext.define('Reclamation', {
        extend: 'Ext.data.Model',
        fields: [  
            {name: 'CONTINUE_ID', type: 'int'},
            {name: 'TYPE', type:'string'}
     
        ]
    });
     
    Ext.onReady(function() { 
        Ext.QuickTips.init();
    // création du textArea
    text = Ext.create('Ext.form.field.TextArea',{
       renderTo: Ext.getDom('test'),
       name: 'objet_detail_contact',
       id: 'objet_detail_contact',
       autoScroll: 'auto',
       width: 400,
       height: 100,
       anchor: '100%',
       readOnly: true
    });
    //Création du dataStore
    BaseReclamation = Ext.create('Ext.data.Store',{
        model: Reclamation,
        pageSize:10,
        proxy: {
            type: 'ajax',
            url: 'http://128.128.76.2/dev/qualite/qualite/ameliorationjson.php',
            reader: {
                    type: 'json',
                    root: 'data',
                    successProperty: 'success'
            }
        },
        listeners: {
            load: {fn: function(){
                    text.setValue(BaseReclamation.getAt(0).get('CONTINUE_ID'));
            }}
        }
    });
    // Application d'un filtre et chargement
    BaseReclamation.filter('ID',document.getElementById("reclam_id").value)
    BaseReclamation.load();
    });
    J'obtiens le message suivant BaseReclamation.getAt(0) is undefined.
    Je ne comprends normalement en utilisant la fonction load. Le listerner sur load doit bien se vendre déclencher.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/07/2017, 11h57
  2. Problème pour accéder aux données ASP.net côté client
    Par mappy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/07/2006, 15h10
  3. Relation ! schéma ! comment accèder aux données ?
    Par julien.63 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/06/2006, 21h14
  4. Accéder aux données d'un sous formulaire
    Par jkembo dans le forum Access
    Réponses: 6
    Dernier message: 28/04/2006, 16h38

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