LookupEdit可以綁定數據表(DataTable)或對象數據組(Object List)作為數據源,下拉窗體可自定顯示欄位。
綁定數據源需要設置三個參數:DisplayMember ,ValueMember,DataSource。
DisplayMember:在LookupEdit輸入框顯示數據的成員名稱(或字段名)。如顯示客戶名稱,設置為CustomerName。
ValueMember:取值的成員名稱(或字段名),通常是標識下拉窗體內資料行的主鍵或業務主鍵。如客戶編號,設置為CustomerCode
DataSource:數據源。數據表(DataTable)或對象數據組(Object List)。

ComboBoxEdit不能直接綁定數據源,也不可顯示多個欄位。需要手工給Properties.Items賦值,參考下面的代碼。
//綁定LookupEdit組件的數據源
lookUpEdit1.Properties.DisplayMember = "ColorCode";
lookUpEdit1.Properties.ValueMember = "ColorCode";
lookUpEdit1.Properties.DataSource = this.ColorData;
//手工添加ComboBoxEdit的數據源
comboBoxEdit1.Properties.Items.Clear();
foreach (DataRow row in this.ColorData.Rows)
{
comboBoxEdit1.Properties.Items.Add(row["ColorCode"]);
}
//來源:C/S框架網(www.csframework.com) QQ:1980854898
C# Code:
private DataTable ColorData
{
get
{
DataTable dtColor = new DataTable();
dtColor.Columns.Add("ColorCode", typeof(string));
dtColor.Columns.Add("ColorType", typeof(string));
dtColor.Rows.Add(new object[] { "Red", "Color1" });
dtColor.Rows.Add(new object[] { "Green", "Color1" });
dtColor.Rows.Add(new object[] { "Blue", "Color2" });
dtColor.AcceptChanges();
return dtColor;
}
}
//來源:C/S框架網(www.csframework.com)
綁定數據源:
lookupedit.properties.valuemember = 實際要用的字段; //相當於editvalue
lookupedit.properties.displaymember =要顯示的字段; //相當於text
lookupedit.properties.datasource = 數據源;
判斷是否選擇下拉框:
if(this.lookupedit.editvalue==null ||this.lookupedit.editvalue.tostring()=="nulltext")
{
//提示信息,說明未選擇下拉框
}
清空nulltext值:
lookupedit.properties.nulltext=null;
設置nulltext值:
lookupedit.properties.nulltext=“請您選擇”;
使用lookupedit1的值:
變量=this.lookupedit.editvalue.tostring() //是ookupedit.properties.valuemember的值
變量=this.lookupedit.text.trim() //是ookupedit.properties.displaymember 的值
特別值得注意的是,有時候我們要使用lookupedit來實現combox的一些效果,在實際的使用過程中在程序加載的時候會默認的選擇第一項,它的設置是:
lookupedit.itemindex=0; //選擇第一項
lookupedit.itemindex=-1; //無選項,此時顯示的是nulltext值 其實這個地方只要editvalue==null,lookupedit就顯示nulltext
lookupedit1.editvalue=value;//自動搜索datasouse,選擇與之匹配的值,沒有的情況下賦值null ,value的值必須與valuemember的數據類型一致。
在gridview中你選擇一條記錄,那么利用bindingsourse.current就可以獲得你要選擇的數據,如果是實體類就可以(object)進行強制轉換,然后 進行一些其它的操作。
但是,lookupedit在你選擇一條記錄的時候,bindingsourse.current的值永遠是第一條記錄,要想獲得你選擇數據源的記錄,必須利用lookupedit.getdatasoursebykeyvalue(keyvalue),(object)進行強制轉這樣就可以了。但是你要注意的就是keyvalue必須是你數據源中的主鍵,否則你獲取的是相同鍵的第一個記錄。如果遇到多鍵值決定一條記錄怎么辦呢?
//綁定lookUpEdit
private void BoundData()
{
string sql = "select daID,xm,sfzh from baseinfo";
DataSet ds = Archives.DataAccess.DataSql.Query(sql);
if (ds != null)
{
int rows = ds.Tables[0].Rows.Count;
lookUpEdit1.EditValue = "daID";
lookUpEdit1.Properties.ValueMember = "daID";
lookUpEdit1.Properties.DisplayMember = "xm";
lookUpEdit1.Properties.DataSource = ds.Tables[0];
//自適應寬度
//lookUpEdit1.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
//填充列
lookUpEdit1.Properties.PopulateColumns();
//設置列屬性
//lookUpEdit1.Properties.Columns[0].Visible = false;
lookUpEdit1.Properties.Columns[1].Caption = "姓名";
lookUpEdit1.Properties.Columns[2].Caption = "身份證號";
lookUpEdit1.Properties.Columns[1].Width = 120;
lookUpEdit1.Properties.Columns[2].Width = 300;
//控制選擇項的總寬度
lookUpEdit1.Properties.PopupWidth = 500;
//列格式設置
lookUpEdit1.Properties.Columns[0].FormatString = "000000";
//選擇第一項
lookUpEdit1.ItemIndex = 0;
}
}
//值改變事件
private void lookUpEdit1_EditValueChanged(object sender, EventArgs e)
{
string daID = this.lookUpEdit1.EditValue.ToString(); //是ookUpEdit.Properties.ValueMember的值
string xm = this.lookUpEdit1.Text.Trim();
}
允許輸入自定義值
1 //手工添加ComboBoxEdit的數據源
2 comboBoxEdit1.Properties.Items.Clear();
3
4 foreach (DataRow row in this.ColorData.Rows)
5 {
6 comboBoxEdit1.Properties.Items.Add(row["ColorCode"]);
7 }
3、設置comboBoxEdit的下拉框只讀,不允許編輯,只需設置其Properties的 TextEditStyle的值為 DisableTextEditor即可。
