SmartGwt – ComboBoxItem databound dependant select

julio 9, 2013

Es común encontrar combos que sólo deben mostrar algunas opciones dependiendo de la selección hecha en otro combo, esto es, una selección dependiente.

En el Showcase de SmartGwt viene un ejemplo de cómo hacer esto. El problema con el ejemplo es que no nos dejará filtrar (en realidad autocompletar) los valores que contiene el combo. Esto se debe a que, en el código del ejemplo, sobreescribimos el método getPickListFilterCriteria que es utilizado cuando escribimos algún valor en el combo.

Por ejemplo, si tenemos que mostrar las Colonias que pertenecen a un Municipio -y además permitir que el usuario filtre/busque al escribir el nombre de la colonia- lo haríamos de la siguiente manera.

        SelectItem itmMunicipio = new SelectItem("municipio", "Municipio");
        itmMunicipio.addChangedHandler(new ChangedHandler() {
            @Override
            public void onChanged(ChangedEvent event) {
                ComboBoxItem item = (ComboBoxItem) frmPartes.getItem("colonia");
                item.setPickListCriteria(new Criteria("municipio", form.getValueAsString("municipio")));
                item.fetchData();
            }
        });
        itmMunicipio.setOptionDataSource(MunicipiosDS.singleton());
        itmMunicipio.setValueField("id");
        itmMunicipio.setDisplayField("nombre");
        itmMunicipio.setDefaultValue("014"); // Querétaro
        ComboBoxItem itmColonia = new ComboBoxItem("colonia", "Colonia");
        itmColonia.setOptionDataSource(ColoniasDS.singleton());
        itmColonia.setValueField("id");
        itmColonia.setDisplayField("nombre");
        itmColonia.setAddUnknownValues(false);
        itmColonia.setTextMatchStyle(TextMatchStyle.SUBSTRING);
        itmColonia.setPickListCriteria(new Criteria("municipio", "014")); // esto es para el valor inicial
        itmColonia.setDefaultToFirstOption(true);
        itmColonia.setWidth(200);
        itmColonia.setPickListWidth(300);

Fuentes:
http://www.smartclient.com/smartgwt/showcase/#dep_selectects_db_combobox_category
http://www.smartclient.com/smartgwt/showcase/#combobox_multifield_search
http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/docs/ComboBoxFiltering.html
http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/widgets/form/fields/ComboBoxItem.html#setTextMatchStyle(com.smartgwt.client.types.TextMatchStyle)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: