flex - seleccionar - valor por defecto combobox vba excel
Flex ComboBox, valor predeterminado y proveedores de datos (4)
Tengo un Flex ComboBox que se llena con un proveedor de datos, 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 proveedor de datos? No he visto ejemplos de eso, pero no puedo imaginar que esto sea difícil ...
La forma en que he tratado esto en el pasado es crear una nueva colección para servir como el proveedor de datos para el cuadro combinado, y luego escucho los cambios en la fuente original (usando un mx.BindingUtils.ChangeWatcher
). Cuando recibo una notificación de este tipo, recreé mi proveedor de datos personalizado.
Ojalá supiera una mejor manera de abordar esto; Voy a controlar esta pregunta por si acaso.
Si no necesita que el elemento predeterminado sea seleccionable, puede usar la propiedad prompt
de ComboBox
y establecer el selectedIndex
en -1. Eso mostrará la cadena a la que le propmt
como el valor seleccionado hasta que el usuario elija otra. Sin embargo, no aparecerá en la lista de opciones.
Hoy me encontré con este problema y quería compartir mi solución.
Tengo un ComboBox que tiene un ArrayCollection que contiene objetos como su proveedor de datos. Cuando la aplicación se ejecuta, utiliza un RemoteObject para salir y obtener ArrayCollection / Objects. En mi controlador de eventos para esa llamada solo tengo que anexar otro objeto al comienzo de ArrayCollection y seleccionarlo:
var defaultOption:Object = {MyLabelField: "Select One"};
myDataProvider.addItemAt(defaultOption, 0);
myComboBox.selectedIndex = 0;
Esto es lo que mi ComboBox parece para referencia:
<mx:ComboBox id="myComboBox" dataProvider="{myDataProvider}" labelField="MyLabelField" />
Esto se puede usar siguiendo el código para el valor predeterminado seleccionado de combobox
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}" />