2010-02-07 12 views
14

Tengo un widget dijit.form.Select. Está vinculado a un almacén de datos, si eso es importante. Ya está lleno de varias opciones. Todo lo que quiero hacer es establecer programáticamente su valor. Puedo obtener su valor usando myWidget.attr('value'), pero si trato de hacer myWidget.attr('value', 5) por ejemplo (donde 5 es uno de los valores válidos), todo lo que hace es restablecer el widget para seleccionar la primera opción, sin importar el valor que le doy.Establecer el valor (opción seleccionada) de un widget dijit.form.Select

Esto parece ser un error, y no hay ninguna prueba o documentación que muestre cómo lograr lo que quiero. Pero, ¿hay alguna forma, incluso si es un truco sucio?

Estoy usando Dojo 1.4.0. Tenga en cuenta que dijit.form.Select es el nuevo nombre de dojox.form.DropDownSelect.

editar: Incluso traté de restablecer el widget con todas las opciones nuevas, pero ignora la opción que tiene selected = true y simplemente selecciona la primera opción. Sin embargo, todavía debe haber una manera.

+0

Hay una página de prueba aquí: http://bit.ly/9qitSk con la que puede meterse. Usando fire-bug usé dijit.byId ('s9'). Attr ('value', 'CO') con éxito en esa página. Eso establecerá el Select "basado en la tienda" en esa página. – jbarz

+0

@Joe B Gracias increíbles: ya lo había visto antes, pero no vi un ejemplo de configuración de valores. Intenté hacer eso en Firebug con mi propio widget Select, que no funcionó, así que me pregunto qué es lo que es diferente ... – aehlke

+0

BTW publique eso como una respuesta y le enviaré un voto favorable. – aehlke

Respuesta

15

Incluso si sus valores son enteros, si establece su entero en una cadena, entonces esto funcionará.

dijit.byId('my_select').attr('value', String(5)); 
+0

¿Hay alguna manera de hacer esto programáticamente? – streetlight

+0

Tenga en cuenta que Dojo 2.0 attr() ya no funcionará. – algiogia

11

Resulta que es un error: si los valores de las opciones no son cadenas, no funcionarán (los míos fueron enteros).

+3

En realidad, es un efecto secundario de cómo funcionan las matrices/hash en js, creo. si usa un int, pensará que está indexando el array, en lugar de usarlo como hash. – aehlke

2

Repost de mi comentario: Hay una página de prueba aquí: dojo archive con la que puede meterse. Usando fire-bug usé dijit.byId ('s9'). Attr ('value', 'CO') con éxito en esa página. Eso establecerá el Select "basado en la tienda" en esa página.

Pero como dijiste, lo configuré con una cuerda y estabas usando enteros, así que no vi el error. Buena atrapada.

+0

Veo exactamente el mismo problema (pero trato de hacer clic en un elemento en el menú desplegable). ¡Aquí estoy usando Dojo 1.7.3 y definitivamente usando Stringrs! :/ –

Cuestiones relacionadas