首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

DevExpress LookUpEdit 核心用法完全指南

     編輯:關於C語言

前言

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。

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

進階陷阱:BindingSource.Current 不同步

現象: 用戶在下拉框選了第 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 is null]"

將 EditValue 屬性的 Type 設為 String,Value 設為空字串 即可。同理,GridControl 內嵌 LookUpEdit 只需設 NullText = ""。

總結速查表

  • 綁定:ValueMember + DisplayMember + DataSource
  • 取值:EditValue (實值) / Text (顯示文本)
  • 預設選項:ItemIndex = 0;清空:EditValue = null
  • BindingSource 不同步 → GetDataSourceRowByKeyValue
  • 複合鍵場景 → GridLookUpEdit
  • 去除 "[EditValue is null]" → EditValue Type=String, Value=""

掌握這些核心點,LookUpEdit 就能在實戰中如臂使指了!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved