LookUpEdit 是 DevExpress WinForms 控件庫中極常用的下拉選擇編輯器,支援資料綁定、多欄顯示、自動完成等豐富功能。本文整理實戰中最高頻的屬性、方法與陷阱,助你快速上手。
lookUpEdit.Properties.ValueMember = "ID"; // 實際取值欄位(對應 EditValue)
lookUpEdit.Properties.DisplayMember = "Name"; // 顯示給用戶看的欄位(對應 Text)
lookUpEdit.Properties.DataSource = dataTable; // 資料來源
口訣:ValueMember 存值,DisplayMember 看值,DataSource 供值。
if (lookUpEdit.EditValue == null || lookUpEdit.EditValue.ToString() == "nulltext") {
// 提示未選擇
}
建議直接檢查 EditValue == null,因為未選時 EditValue 為 null,且控件會顯示 NullText。
lookUpEdit.Properties.NullText = null;lookUpEdit.Properties.NullText = "請選擇";| 需求 | 代碼 | 說明 |
|---|---|---|
| 取實際值 | var val = lookUpEdit.EditValue.ToString(); | 對應 ValueMember |
| 取顯示文本 | var txt = lookUpEdit.Text.Trim(); | 對應 DisplayMember |
// 選中第一項
lookUpEdit.ItemIndex = 0;
// 清除選擇(顯示 NullText)
lookUpEdit.ItemIndex = -1;
// 等同於
lookUpEdit.EditValue = null;
// 根據值自動搜尋並選中(值類型必須與 ValueMember 一致)
lookUpEdit.EditValue = someValue; // 找不到則自動變 null
現象: 用戶在下拉框選了第 3 筆,但 bindingSource.Current 仍指向第 1 筆。
原因: LookUpEdit 不會自動移動 BindingSource 位置。
解法: 使用 GetDataSourceRowByKeyValue 直接按鍵值取行:
object row = lookUpEdit.GetDataSourceRowByKeyValue(keyValue);
// keyValue 必須是資料源的主鍵值
若主鍵為複合鍵,請改用 GridLookUpEdit(融合 GridView 與 LookUpEdit),並透過:
int rowHandle = gridLookUpEditView.FocusedRowHandle;
object row = gridLookUpEditView.GetDataSourceRowIndex(rowHandle);
將 EditValue 屬性的 Type 設為 String,Value 設為空字串 即可。同理,GridControl 內嵌 LookUpEdit 只需設 NullText = ""。
ValueMember + DisplayMember + DataSourceEditValue (實值) / Text (顯示文本)ItemIndex = 0;清空:EditValue = nullGetDataSourceRowByKeyValue掌握這些核心點,LookUpEdit 就能在實戰中如臂使指了!