¿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.
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 variabletext
, la cual no es igual al parámetrosearch
pasado desde el control AutoComplete.Para resolver este problema, reemplaza la variable
text
por el parámetrosearch
en el método de la siguiente manera:Ahora el control AutoComplete debería mostrar los elementos coincidentes en la lista desplegable.