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 :

[ComboBox][Entête] Valeur au lieu d'index


Sujet :

Ext JS / Sencha

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 60
    Points
    60
    Par défaut [ComboBox][Entête] Valeur au lieu d'index
    Bonjour,

    Mon problème concerne l'affichage de la valeur d'entête d'une liste déroulante.
    Je m'explique :

    Je remplis une liste déroulante (combobox) à l'aide d'un store qui récupère les données dans une table et qui les retourne au format json. Jusque ici tout va bien, ma combobox affiche les valeurs comme il se doit.

    Ma liste déroulante est remplie avec le json au format suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"criterions":[{"criterion_id":"46","criterion_code":"Clients","criterion_description":"Clients"},{"criterion_id":"47","criterion_code":"Type_2","criterion_description":"Type 2"},{"criterion_id":"48","criterion_code":"Type_3","criterion_description":"Type 3"}]}
    Coté View, ma combobox est définie de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
        xtype			: 'combo',
        id				: 'entityTypesCombo',
        editable		: false,
        allowBlank		: false,
        store			: 'EntityTypes',
        displayField 	: 'criterion_code',
        valueField		: 'criterion_id',
        fieldLabel		: 'Type :',
        emptyText		: 'Veuillez sélectionner un type...',
        name			: 'entity_type_id',
        flex			: 1
    }
    Maintenant, je charge une view avec les données suivantes (récupérées via un SELECT, et qui va me retourner une seule ligne) :

    Exemple de mon json reçu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"success":"true","data":{"entity_id":"1","entity_code":"INTERNE","entity_description":"blabla ","entity_type_id":"47"}}
    Mon problème concerne donc le "entity_type_id" :
    En fait, comme on a pu le voir ci-dessus, ma liste déroulante est paramétrée avec UN INDEX : criterion_id et UNE VALEUR : criterion_code.
    Et lorsque la liste déroulante s'affiche, dans son entête la valeur est 47, alors que je m'attends à ce qu'elle m'affiche TYPE_2 (le criterion_code correspondant à cet index).

    En résumé, y a t-il possibilité de paramétrer ma liste déroulante pour que quand elle récupère un index, elle affiche (en mode non dépliée) la valeur qui correspond à cet index ?

    En espérant avoir été assez clair

    Un grand merci à l'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    Je reviens sur ce post en essayant d'être plus clair

    J'ai une comboBox définie de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
       xtype			: 'combo',
       id				: 'entityTypesCombo',
       editable		        : false,
       store			: 'EntityTypes',
       displayField 	        : 'criterion_code',
       valueField		: 'criterion_id',
       fieldLabel		: 'Type :',
       emptyText		: 'Veuillez sélectionner un type...',
       name			: 'entity_type_id',
       flex			: 1
    }
    Dans mon exemple, la comboBox sera constitué avec les données JSON suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"criterions":[{"criterion_id":"46","criterion_code":"Type_1"},{"criterion_id":"47","criterion_code":"Type_2"},{"criterion_id":"48","criterion_code":"Type_3"}]}
    Lorsque j'enregistre mon formulaire, dans la table de ma base de donnés, j'enregistre la valeur entity_type_id qui correspond à la valeur criterion_id de la comboBox. Jusque là, aucun problème. Pour l'exemple, j'enregistre dans ma table la valeur 47 (identifiant qui correspond au texte 'Type_2').

    Maintenant le problème est lorsque je décide de charger les informations de ma table dans mon formulaire.
    Je le fais de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Ext.getCmp('contentPanel').layout.activeItem.getForm().load
    (
    	{
    		url: 'index.php',
    		params: 
    		{
    			task	: 'getInfos',
    			data	: record.data.id
    		}
    	}
    );
    NB : Dans data, j'envoi simplement l'id de l'enregistrement dont je veux récupérer les infos.

    Je récupère les données suivantes au format JSON :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"success":"true","data":{"entity_id":"86","entity_type_id":"47"}}
    A l'aide de entity_type_id, je voudrais donc que ma liste déroulante affiche, non pas 47, comme c'est le cas actuellement, mais la valeur qui se trouve à l'index 47, soit 'Type_2'.

    Pourriez-vous me dire comment faire pour spécifier à cette comboBox de m'afficher la valeur au lieu de l'index ?

    Encore merci

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Février 2012
    Messages : 69
    Points : 60
    Points
    60
    Par défaut
    Finalement je viens de trouver une solution

    En fait, il suffit de setter la valeur de la comboBox à l'aide de la clé reçu dans la réponse (ici en Json).

    Pour reprendre mon exemple lors du chargement de mes données à afficher dans mon formulaire :
    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
    Ext.getCmp('contentPanel').layout.activeItem.getForm().load
    (
    	{
    		url: 'index.php',
    		params: 
    		{
    			task	: 'getInfos',
    			data	: record.data.id
    		},
    		success : function()
    		{
    			var data = JSON.parse(this.response.responseText).data;
    			Ext.getCmp('entityTypesCombo').setValue(parseInt(data.entity_type_id));
    		}
    	}
    );
    Grâce à ce bout de code en +, quand mes données sont chargées avec succès, je récupère la clé qui m'interesse pour ma comboBox (ici entity_type_id). Et il ne me reste plus qu'à initialiser la comboBox en lui disant de chercher l'enregistrement correspondant à la clé donnée.

    Référence : http://docs.sencha.com/extjs/4.1.3/#...ethod-setValue

    NB : En fait, je m'attendais à trouver une option/configuration pour une comboBox qui permettrait de lui spécifier la clé de recherche pour trouver un enregistrement spécifique.
    Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {
       xtype			: 'combo',
       id				: 'entityTypesCombo',
       editable		        : false,
       store			: 'EntityTypes',
       displayField 	        : 'criterion_code',
       valueField		: 'criterion_id',
       recordKey              : 'entity_type_id',
       fieldLabel		: 'Type :',
       emptyText		: 'Veuillez sélectionner un type...',
       name			: 'entity_type_id',
       flex			: 1
    }
    On doit pouvoir "ajouter" une option à un composant !!?

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

Discussions similaires

  1. action au lieu de index.jsp dans Welcome File
    Par jawed84 dans le forum Struts 1
    Réponses: 9
    Dernier message: 14/11/2008, 19h09
  2. Réponses: 1
    Dernier message: 11/01/2007, 11h01
  3. comboBox recup valeur data
    Par totoche dans le forum Flash
    Réponses: 2
    Dernier message: 26/10/2006, 11h58
  4. [WinForms] ComboBox avec valeur non désirée
    Par Ditch dans le forum Général Dotnet
    Réponses: 14
    Dernier message: 11/04/2006, 16h52
  5. 'Index' d'un ComboBox.AddItem : Valeurs désordonnées.
    Par __fabrice dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 26/10/2005, 16h41

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