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

Bibliothèques & Frameworks Discussion :

Store ItemFileReadStore ne se remplit pas


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut Store ItemFileReadStore ne se remplit pas
    Bonjour,

    J'ai un problème sur un "ItemFileReadStore", en effet celui ci ne se rempli pas. La requete à la base se fait bien, et renvoi bien les résulats voulus (vérifié dans Firefox grâce à FireBug), mais le combobox ne se rafraichi pas.

    Voila le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script>
    	function test(taping)
    	{
    		var cstore = new dojo.data.ItemFileReadStore({url: '/reserver/autocomplete/?taping='+taping, jsId: "datStore" });
    		dijit.byId('test').attr("store", cstore);
     
    	}
    </script>
     
    <input dojoType="dijit.form.ComboBox" name="test" id="test" jsId="datStore" onKeyPress="test(document.getElementById('test').value);" hasDownArrow="true">
    Si quelqu'un pouvait me dire d'ou vient le problème.

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    L'appel de la création du store est incorrect (mais l'erreur est sans impact), et ce code fonctionne pour moi:

    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
    <script>
    	function test(taping)
    	{
    		var cstore = new dojo.data.ItemFileReadStore({url: '/reserver/autocomplete/?taping='+taping});
    		
    		dijit.byId('test').store=null;
    		dijit.byId('test').reset();
    		dijit.byId('test').attr("store", cstore);
    		
    		//peut-être gérer ici aussi value, displayedValue...
     
    	}
    </script>
     
    <input dojoType="dijit.form.ComboBox" name="test" id="test" jsId="datStore" 
    onKeyPress="test(document.getElementById('test').value);" hasDownArrow="true">
    D'autre part, document.getElementById('test') gagnerait à être remplacer par un dijit.byId('test').attr('value'), non ?

    ERE

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Bonjour,

    Déja merci de t'être penché sur ce cas.
    Pour ma part, j'ai effectué les corrections dont tu as parlé, mais chez moi rien ne se passe.

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Oups, j'ai été un peu vite dans la rédaction... il faut faire un fetch pour rapatrier tes données...

    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
    <script>
    	function test(taping)
    	{
    		var cstore = new dojo.data.ItemFileReadStore({url: '/reserver/autocomplete/?taping='+taping});
     
          var d = dijit.byId('test');
          cstore.fetch({query:'*', onComplete : function() {
            console.info("store chargé");
            d.store = null;
            d.store= cstore; 
          }});
     
          //peut-être gérer ici aussi value, displayedValue...
     
    	}
    </script>
     
     
    <input dojoType="dijit.form.ComboBox" name="test" id="test" jsId="datStore" 
    onKeyPress="test(document.getElementById('test').value);" hasDownArrow="true">
    Et là c'est tout bon

    ERE

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Trop bizarre, dans la console il me marque bien "store chargé" dans l'activité réseau, je vois bien le contenu du store dans la réponse mais rien ne s'affiche...

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Tu utilises quel navigateur ?

    ERE

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Firefox

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    c'est bon le problème est résolu, il fallait rajouté : "searchAttr" dans le input :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input dojoType="dijit.form.ComboBox" name="test" id="test" jsId="datStore" searchAttr="Search" onKeyUp="test(document.getElementById('test').value);" hasDownArrow="true">
    Par contre la liste ne s'affiche pas directement il faut ré-appuyer sur la flèche pour l'afficher...et ça c'est embêtant.

  9. #9
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Par contre la liste ne s'affiche pas directement il faut ré-appuyer sur la flèche pour l'afficher...et ça c'est embêtant.
    C'est qu'on devient exigeant !

    Doit bien y avoir une solution, une méthode quelconque...je regarderai ce soir.

    ERE

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Ben en fait, c'est dû surement à ma façon de faire, car la liste s'affiche dans un cas mais pas dans l'autre, je m'explique, en fait le store que je remplis va chercher dans une table des départements français, en même temps dans le numéro de département et dans le nom de département.
    Le résultat que je renvois est un concat du numéro + nom . Le numéro étant en premier si on commence à taper le numéro dans le combobox la liste s'affiche, si on comment a taper le nom cela ne s'affiche pas directement, il faut à ce moment cliquer sur la flèche.

    Mon code HTML :

    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
     
    <script>
    	function test(taping)
    	{
    		dojo.xhrPost(
            {
                url:'/reserver/fetchdepartement/taping/'+taping,
                handleAs: 'json',
                load: function(response)
                    {
     
                    dijit.byId("test").store=new dojo.data.ItemFileReadStore({data: response});
                    },
                Error: function(errorTxt){
                    console.log("erreur dans getMonId: " + errorTxt)
                  }
     
    	       }
    	    );
     
    	}
    </script>
     
     
    <input dojoType="dijit.form.ComboBox" name="test" id="test" jsId="datStore" searchAttr="Search" onKeyUp="test(document.getElementById('test').value);" hasDownArrow="true">
    Mon Action dans le controleur :

    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
     
    public function fetchdepartementAction()
        {
    		$taping = $this->_getParam('taping');
     
        	Zend_Layout::getMvcInstance()->disableLayout();
        	$this->_helper->viewRenderer->setNoRender();
     
        	$dbAdapter = Zend_Registry::get('dbAdapter');
     
        	$select = $dbAdapter->select()
        						->from(array('m' => 'maps_dep'),
        								array('m.id_departement',
    										'm.nom_departement',
    										"concat(m.code,'-',m.nom_departement) as Search"))
    							->where('m.code LIKE ?',$taping.'%')
    							->orwhere('m.nom_departement LIKE ?',$taping.'%')
        						->group('m.id_departement');
    		//die($select);
        	$rows = $dbAdapter->fetchAll($select);
    		//die(print_r($rows));
        	$data = new Zend_Dojo_Data('id_departement', $rows);
     
        	echo $data->toJson();
        }
    Donc ça marche mais dans un cas pas complètement, il y a un contournement, mais cela oblige une étape supplémentaire que je souhaiterais squizzer.

    Merci

  11. #11
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Tu peux paramétrer la façon dont la requête se fait pour chercher les entrées

    Pour toi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <select ...	dojoType="dijit.form.ComboBox" queryExpr="*${0}*"  ...>
    ${0} est la donnée tapée et * le caractère générique.

    ERE

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Bonjour,

    cette fonction marche bien seulement va savoir pourquoi, je tape une lettre une liste s'affiche avec le toutes les valeurs comprenant ce caractère, mais dès que j'en tape une deuxième, cela efface la première lettre...

  13. #13
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par kanabzh29 Voir le message
    Bonjour,

    cette fonction marche bien seulement va savoir pourquoi, je tape une lettre une liste s'affiche avec le toutes les valeurs comprenant ce caractère, mais dès que j'en tape une deuxième, cela efface la première lettre...
    C'est dingue cela fonctionne aux petits oignons chez moi !

    ERE

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Mais je vais trouver la solution...je désespère pas.

  15. #15
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par kanabzh29 Voir le message
    Bonjour,

    cette fonction marche bien seulement va savoir pourquoi, je tape une lettre une liste s'affiche avec le toutes les valeurs comprenant ce caractère, mais dès que j'en tape une deuxième, cela efface la première lettre...
    Mais cela fait bien la recherche avec tous les caractères ou cela ne prend en compte que le dernier caractère saisi ?

    ERE

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Que le dernier caractère saisi

  17. #17
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,
    Tu peux envoyer le code HTML généré côté client et ton store que je fasse une simulation ?

    ERE

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 288
    Par défaut
    Voila le code HTML généré :

    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
     
    <script>
    	function test(taping)
    	{
    		dojo.xhrPost(
            {
                url:'/reserver/fetchdepartement/taping/'+taping,
                handleAs: 'json',
                load: function(response)
                    {
     
                    dijit.byId("dep").store=new dojo.data.ItemFileReadStore({data: response});
                    },
                Error: function(errorTxt){
                    console.log("erreur dans getMonId: " + errorTxt)
                  }
     
    	       }
    	    );
    	}
     
    	function ville(taping)
    	{
     
    		dijit.byId('ville').setValue('');
     
    		dojo.xhrPost(
            {
                url:'/reserver/fetchville/taping/'+taping,
                handleAs: 'json',
                load: function(response)
                    {
     
                    dijit.byId("ville").store=new dojo.data.ItemFileReadStore({data: response});
                    },
                Error: function(errorTxt){
                    console.log("erreur dans getMonId: " + errorTxt)
                  }
     
    	       }
    	    );
    	}
    </script>
     
     
    <input dojoType="dijit.form.ComboBox" queryExpr="*${0}*" name="dep" id="dep" jsId="datStoreDep" searchAttr="Search" onKeyUp="test(document.getElementById('dep').value);" onChange="ville(document.getElementById('dep').value);" hasDownArrow="true">
    <input dojoType="dijit.form.ComboBox" queryExpr="*${0}*" name="ville" id="ville" jsId="datStoreVille" searchAttr="Search" hasDownArrow="true">

Discussions similaires

  1. Zone de liste qui se remplit pas
    Par illight dans le forum IHM
    Réponses: 2
    Dernier message: 28/04/2008, 10h38
  2. Mon JDesktopPane ne remplit pas toute ma JFrame
    Par Tijee dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 16/01/2008, 03h18
  3. [Package wallpaper] La texture ne remplit pas le pied de page
    Par shushed dans le forum Mise en forme
    Réponses: 4
    Dernier message: 27/09/2007, 16h37
  4. Réponses: 23
    Dernier message: 20/02/2007, 10h34
  5. Background ne remplit pas toute la page
    Par brotelle dans le forum Balisage (X)HTML et validation W3C
    Réponses: 82
    Dernier message: 18/05/2006, 14h04

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