You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms中SyncFusion SfAutoComplete建议下拉列表为空的原因是什么

问题原因及解决方法

1. 过滤方法取值逻辑错误

自定义过滤委托Filter的第一个入参search就是当前用户输入的搜索文本,无需额外读取customerAutoComplete.Text。触发过滤逻辑时,控件的Text属性可能还未完成更新,大概率会拿到空值,导致所有匹配判断都不成立,下拉列表自然无内容。

2. 实体属性名拼写/大小写不匹配

你声明的实体类三个字段为CUSTNMBR、CUSTNAME、ZIP,但过滤方法中写的是myCustomer.CustName、myCustomer.CustNmbr,C#严格区分大小写,属性名不匹配会导致读取到空值,Contains判断会永远返回false。

3. 可选优化:增加空值兼容与大小写不敏感匹配

避免字段为空时抛出空引用异常,同时兼容大小写不同的搜索场景。


修改后的过滤方法示例

private bool FilterCustomers(string search, object customer)
{
    // 直接使用方法传入的search参数,不要读取控件的Text属性
    if (string.IsNullOrWhiteSpace(search) || customer == null)
    {
        return false;
    }
    var myCustomer = (OrganizationSearchDto)customer;
    // 属性名要和实体类的实际属性名完全一致,示例使用你给出的大写字段名
    return myCustomer.CUSTNAME.Contains(search, StringComparison.OrdinalIgnoreCase) 
        || myCustomer.CUSTNMBR.Contains(search, StringComparison.OrdinalIgnoreCase) 
        || myCustomer.ZIP.Contains(search, StringComparison.OrdinalIgnoreCase);
}

额外检查项

  • 确认GetCustomerCodes()返回的集合不为空,且集合元素的三个字段都有正常赋值
  • 确认DisplayMemberPath绑定的CUSTNMBR确实是OrganizationSearchDto类的公共属性,无拼写错误

内容的提问来源于stack exchange,提问作者Randy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:45:05