SearchLookUpEdit或LookUpEdit选中项索引始终为0,无法获取正确选中项信息求助
解决SearchLookUpEdit/LookUpEdit选中项索引始终为0的问题
检查控件多选模式设置
先确认控件的Properties.SelectionMode是MultiSelectMode.Single(单选场景),如果设成了其他错误模式,可能导致选中状态识别异常。核对数据源绑定配置
检查Properties.ValueMember和Properties.DisplayMember是否正确绑定到数据源的对应字段,这两个属性是控件正确识别选中项的核心。另外确认数据源本身没有数据异常(比如所有行的主键值重复),这种情况控件会默认选中第一项。换用更可靠的选中项获取方法
你当前用的GetSelectedDataRow()可能在某些场景下(比如控件未完成数据绑定、事件触发时机不对)返回异常,试试这两种方式:- 通过
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]; // 这里处理选中行的数据 } } - 通过下拉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
相关产品推荐
相关产品推荐

