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

SearchLookUpEdit或LookUpEdit选中项索引始终为0,无法获取正确选中项信息求助

解决SearchLookUpEdit/LookUpEdit选中项索引始终为0的问题
  • 检查控件多选模式设置
    先确认控件的Properties.SelectionMode是MultiSelectMode.Single(单选场景),如果设成了其他错误模式,可能导致选中状态识别异常。

  • 核对数据源绑定配置
    检查Properties.ValueMember和Properties.DisplayMember是否正确绑定到数据源的对应字段,这两个属性是控件正确识别选中项的核心。另外确认数据源本身没有数据异常(比如所有行的主键值重复),这种情况控件会默认选中第一项。

  • 换用更可靠的选中项获取方法
    你当前用的GetSelectedDataRow()可能在某些场景下(比如控件未完成数据绑定、事件触发时机不对)返回异常,试试这两种方式:

    1. 通过EditValue匹配数据源行:
      SearchLookUpEdit view = sender as SearchLookUpEdit;
      if (view != null && view.EditValue != null)
      {
          // 假设数据源是DataTable,ValueMember绑定的是"ID"字段
          DataTable dt = view.Properties.DataSource as DataTable;
          DataRow[] targetRows = dt.Select($"ID = {view.EditValue}");
          if (targetRows.Length > 0)
          {
              DataRowView dvRow = targetRows[0].DefaultView[0];
              // 这里处理选中行的数据
          }
      }
      
    2. 通过下拉GridView获取聚焦行:
      SearchLookUpEdit view = sender as SearchLookUpEdit;
      if (view != null)
      {
          GridView dropDownView = view.Properties.View as GridView;
          if (dropDownView != null && dropDownView.FocusedRowHandle != DevExpress.XtraGrid.GridControl.InvalidRowHandle)
          {
              DataRowView dvRow = dropDownView.GetRow(dropDownView.FocusedRowHandle) as DataRowView;
              // 这里处理选中行的数据
          }
      }
      
  • 确认事件触发时机
    确保在EditValueChanged这类选中状态变更后的事件里获取选中项,别在控件初始化、数据加载未完成的事件(比如Load)里操作,这时控件还没完成选中状态初始化,会默认返回第一项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:57:32