Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour
j'essaie de modifier le contenu du store de ma combobox (FilteringSelect) dans un fonction Javascript (avec dojo.xhrPost) à partir du fichier (en json voir plus bas).
function getMonId(id)
{
dojo.xhrPost(
{
//url:'/test/index/monid/cle/'+id,
url:'/test/public/liste.json',
//handleAs: 'json-comment-filtered',
load: function(response)
{
alert('load=>'+ response);
var mesestore = new dojo.data.ItemFileReadStore({data: response});
dojo.byId("MonId").store = mesestore;
},
error:function(response)
{
alert ('error=>' + response);
}
}
);
}
le fichier json:
{"identifier":"id","items":[{"id":"1","toto":"KLOP 240s MTB"},{"id":"2","toto":"SUZUKI XTR HB-M960"},{"id":"3","toto":"ATOMLAB Pimp 20"},{"id":"5","toto":"DT SWISS ES250-2"}]}
Message firebug :
dijit.form.ComboBox: Error: dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object.
Cependant ma combobox reste désespérément vide ! une idée ?
Michel
Dernière modification par mksoft (26-03-2009 18:02:52)
Hors ligne
voici la solution pour charger une combobox (filteringSelect) sur un Onchange() d'un autre élement de la form (en l'occurence une autre combobox) (ZF version 1.7.4 attention bug sur ItemFileReadstore à partir de 1.7.6)
en remplaçant
dojo.byId("MonId").store=new dojo.data.ItemFileReadStore({data: response});
par
dijit.byId("MonId").store=new dojo.data.ItemFileReadStore({data: response});
function getMonId(id)
{
dojo.xhrPost(
{
url:'/test/index/monid/cle/'+id,
handleAs: 'json',
load: function(response)
{
dijit.byId("MonId").store=new dojo.data.ItemFileReadStore({data: response});
},
Error: function(errorTxt){
console.log("erreur dans getMonId: " + errorTxt)
}
}
);
}
avec la form :
public function getForm()
{
//Zend_Registry::get('logger')->info('on passe dans getform');
$form = new Zend_Form;
$userId = new Zend_Dojo_Form_Element_FilteringSelect('userId');
$userId->setLabel('Select a user')
->setAutoComplete(true)
->setStoreId('userStore')
->setStoreType('dojo.data.ItemFileReadStore')
->setStoreParams(array('url'=>'/test/index/userlist'))
->setAttribs(array("searchAttr" => "toto","onchange" => "getMonId(this.value)"))
->setRequired(true);
$MonId = new Zend_Dojo_Form_Element_FilteringSelect('MonId');
$MonId->setLabel('selection liee')
->setAutoComplete(true)
->setStoreId('monStore')
->setStoreType('dojo.data.ItemFileReadStore')
->setAttribs(array("searchAttr" => "toto"))
->setRequired(true);
$submit = $form->createElement('submit','submit');
$form->addElements(array($userId,$MonId,$submit));
return $form;
}
Hors ligne
non le bug sur les ItemFileReadStore a été corrigé sur la 1.7.7, il n'est présent que sur la 1.7.6.
Mais c'est sympa de le précisé dans ton post
Hors ligne
j'ai testé la version ZF 1.7.7 ce matin. avec le même source, j'ai une erreur trappée dans Firebug.
dojo.data is undefined
var userStore = new dojo.data.ItemFileRe...tore({"url":"\/test\/index\/userlist"});
donc je maintiens que mon code précité fonctionne sur ZF 1.7.4 Après ...
Hors ligne
Je vais tester car j'utilise pas mal les ItemFileReadStore et depuis le 1.7.7 je n'ai plus de problème.
Mon code n'est pas exactement le même que toi mais je vais tester.
Je sais que le code a changé pour corriger un problème d'id déjà existant avec les ItemFileReadStore.
Peux tu me donner l'erreur que tu as dans ton firebug stp ?
Hors ligne
dans firebug :
dojo.data is undefined
var userStore = new dojo.data.ItemFileRe...tore({"url":"\/test\/index\/userlist"});
Hors ligne
Bonjour,
j'ai essayé ta méthode, vu que la mienne provoquait un déphasage entre le source html et le contenu visible de la listebox. (voir mon message ici)
Mon problème est qu'à la soumission du formulaire si il manque une saisie sur une des autres zones, alors au moment du réaffichage la première listebox contient bien la dernière valeur sélectionnée mais la listebox liée est vide et rien si on essaye de la dérouler.
Il faut changer la première liste pour "réamorcer" la mécanique, ce qui est troublant pour l'utilisateur, puisque l'on est sur la bonne valeur.
Hors ligne
Pages: 1