Pregunta

tengo un flex ComboBox que se puebla por un dataprovider todo está bien...

Ahora me gustaría agregar una opción predeterminada "-seleccionar un elemento-" en el índice 0, ¿cómo puedo hacer esto y seguir usando un dataprovider?No he visto ningún ejemplo de esto, pero no puedo imaginar que esto sea difícil...

¿Fue útil?

Solución

Si no necesita que el elemento predeterminado sea seleccionable, puede utilizar el prompt propiedad de ComboBox y establecer el selectedIndex a 1.Eso mostrará la cadena que configuraste. propmt como el valor seleccionado hasta que el usuario elija otro.Sin embargo, no aparecerá en la lista de opciones.

Otros consejos

Me encontré con este problema hoy y quería compartir mi solución.

Tengo un ComboBox que tiene un ArrayCollection que contiene objetos como proveedor de datos.Cuando se ejecuta la aplicación, utiliza un RemoteObject para salir y obtener ArrayCollection/Objects.En mi controlador de eventos para esa llamada, simplemente le pido que agregue otro objeto al comienzo de ArrayCollection y lo seleccione:

var defaultOption:Object = {MyLabelField: "Select One"};
myDataProvider.addItemAt(defaultOption, 0);
myComboBox.selectedIndex = 0;

Así es como se ve mi ComboBox como referencia:

<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" />

La forma en que he lidiado con esto en el pasado es crear una nueva colección para que sirva como proveedor de datos para el cuadro combinado, y luego escucho los cambios en la fuente original (usando un mx.BindingUtils.ChangeWatcher).Cuando recibo dicha notificación, vuelvo a crear mi proveedor de datos personalizado.

Ojalá supiera una mejor manera de abordar esto;Seguiré esta pregunta por si acaso.

Esto se puede utilizar a continuación del código para el valor predeterminado seleccionado del cuadro combinado.

var index:String = "foo";
for(var objIndex:int = 0; objIndex < comboBox.dataProvider.length; objIndex++) {
  if(comboBox.dataProvider[objIndex].label == index)
  {
     comboBox.selectedIndex = objIndex;
     break;
  }
}
<mx:ComboBox id="comboBox" dataProvider="{_pageIndexArray}" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top