DEV組件LookupEdit,ComboBoxEdit綁定數據源


LookupEdit可以綁定數據表(DataTable)或對象數據組(Object List)作為數據源,下拉窗體可自定顯示欄位。

綁定數據源需要設置三個參數:DisplayMember ,ValueMember,DataSource。

DisplayMember:在LookupEdit輸入框顯示數據的成員名稱(或字段名)。如顯示客戶名稱,設置為CustomerName。

ValueMember:取值的成員名稱(或字段名),通常是標識下拉窗體內資料行的主鍵或業務主鍵。如客戶編號,設置為CustomerCode

DataSource:數據源。數據表(DataTable)或對象數據組(Object List)。




貼圖圖片



ComboBoxEdit不能直接綁定數據源,也不可顯示多個欄位。需要手工給Properties.Items賦值,參考下面的代碼。


C# Code:


//綁定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必須是你數據源中的主鍵,否則你獲取的是相同鍵的第一個記錄。如果遇到多鍵值決定一條記錄怎么辦呢?

  這個問題dev express也有他相應的解決辦法,就是用到gridlookupedit,它該是gridview和lookupedit的結合體吧,利用這個你就可以選擇主鍵相同的記錄了,利用gridlookupeditview.getdatasourcerowindex(gridlookupeditview.focusedrowhandle)就可以了。
 
實例綁定方法

//綁定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();
        }

允許輸入自定義值

LookupEditor1.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
 
 
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即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM