2011-10-23 19 views
7

Estoy poblando un widget de selección dijit con opciones cada vez que cambie el valor de otro widget.Establecer programáticamente el valor seleccionado de un dijit Seleccionar widget

En mi aplicación, hay un menú desplegable para "Ruta de autobús" y un menú desplegable para "Parada de autobús". Los usuarios han asignado rutas de autobús y paradas que deberían ser actualizadas.

Por lo tanto, cuando la página se carga por primera vez, el cuadro desplegable de ruta tiene todas las rutas disponibles, y la ruta a la que está asignado actualmente es el valor seleccionado. El menú de detención se carga con todas las paradas asociadas a esa ruta, pero no hay ningún valor seleccionado, por lo que, de manera predeterminada, es la primera opción.

Cuando el usuario cambia la ruta actualmente seleccionada, el menú de parada cambia en consecuencia y se completa con todas las paradas asociadas a esa ruta.

Mi pregunta es, con dojo, ¿cómo puedo configurar la opción "Seleccionado" en el menú de detención?

Quiero que quede claro qué parada está asignada actualmente a ese usuario, en lugar de que la parada "seleccionada" sea la primera opción en la ruta.

Gracias.

Respuesta

17
selectWidget.set("value", someValue); 

Si está especificando opciones a través de la propiedad options (matriz de objetos con label, value, etc.), entonces someValue debe coincidir con el value de uno de esos objetos. (Tenga en cuenta que también puede especificar selected: true derecho dentro de uno de los objetos de la matriz pasó a options.)

Si va a proporcionar artículos de una tienda dojo.data través de la propiedad store, entonces someValue debe coincidir con la identidad de uno de los artículos de la tienda.

(editar) NOTA: Supuse anteriormente que con "dijit select widget" se está refiriendo a dijit.form.Select. Si realmente está usando dijit.form.ComboBox o dijit.form.FilteringSelect, la misma línea de código sigue siendo verdadera, según corresponda a las tiendas en el último párrafo. En el caso de instanciación declarativa con una etiqueta select, ComboBox y FilteringSelect aún crean una tienda, cuyas identidades de artículos son los valores de las opciones dentro de la etiqueta de selección.

3
//With dojo version 1.9 
//search for the item in store dojo/store/Memory with the corresponding id value 
var objItem = store.get("1"); 
//set the combobox's item 
comboBox.set("item", objItem); 
+1

¡Esto era exactamente lo que estaba buscando! – GuyT

+0

¿Hay alguna manera de hacerlo funcionar con la eliminación de un valor también? – streetlight

Cuestiones relacionadas