es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué mi desplegable de sugerencias de AutoCompletar está en blanco?

Tengo un formulario de Xamarin en el que intento agregar un control de AutoComplete de SyncFusion. Los datos son una clase simple con solo tres campos de texto (CUSTNMBR, CUSTNAME, ZIP). Quiero que coincida en cualquiera de los campos y muestre el correspondiente CUSTNMBR. Aquí está mi línea en Xaml:

<xforms:sfautocomplete x:name="customerAutoComplete" widthrequest="120" backgroundcolor="White"></xforms:sfautocomplete>

En el constructor de código subyacente del formulario, llamo a LoadCustomerData():

private async void LoadCustomerData()
{
    customerAutoComplete.DataSource = await GetCustomerCodes();
    customerAutoComplete.DisplayMemberPath = "CUSTNMBR";
    customerAutoComplete.SelectedValuePath = "CUSTNMBR";
    customerAutoComplete.SuggestionMode = SuggestionMode.Custom;
    customerAutoComplete.Filter = FilterCustomers;
    customerAutoComplete.AutoCompleteMode = AutoCompleteMode.Suggest;
    customerAutoComplete.Watermark = "Código postal, ID de cliente o nombre de cliente";
    customerAutoComplete.MinimumPrefixCharacters = 3;
}

Aquí está mi método de filtro.

private bool FilterCustomers(string search, object customer)
{
    var text = customerAutoComplete.Text;

    if (customer != null)
    {
        var myCustomer = (OrganizationSearchDto)customer;
        if (myCustomer.CustName.Contains(text) || myCustomer.CustNmbr.Contains(text) ||
            myCustomer.Zip.Contains(text))
        {
            return true;
        }
    }

    return false;
}

El código anterior funcionaba parcialmente cuando tenía customerAutoComplete.SuggestionMode = SuggestionMode.Contains, pero no coincidía en los otros dos campos. Ahora todavía se ejecuta, sin embargo, no se muestra nada en la lista desplegable (está en blanco). ¿Por qué mi lista desplegable está en blanco? Agradeceré cualquier pista, sugerencia o empujón en la dirección correcta.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Problema con Xamarin Form y el control AutoComplete de SyncFusion

    El problema está con el método FilterCustomers utilizado para filtrar el origen de datos del control AutoComplete. El método verifica la variable text, la cual no es igual al parámetro search pasado desde el control AutoComplete.

    Para resolver este problema, reemplaza la variable text por el parámetro search en el método de la siguiente manera:

    private bool FilterCustomers(string search, object customer)
    {
        if (customer != null)
        {
            var myCustomer = (OrganizationSearchDto)customer;
            if (myCustomer.CustName.Contains(search) || myCustomer.CustNmbr.Contains(search) ||
                myCustomer.Zip.Contains(search))
            {
                return true;
            }
        }
        return false;
    }
    

    Ahora el control AutoComplete debería mostrar los elementos coincidentes en la lista desplegable.

Comments are closed.