2012-11-28 130 views
2

enter image description hereC#組合框顯示錯誤的值

我想從數據庫中插入數據到我的ComboBox中。這是我的代碼:

OracleDataTable dt = new OracleDataTable(); 
OracleConnection conn = new OracleConnection(); 
conn.ConnectionString = "....string...."; 

string query = "SELECT emp_username FROM dc_emp"; 
OracleDataAdapter da = new OracleDataAdapter(query,conn); 

da.Fill(dt); 
rp.cbDelivery.DataSource = dt; 
rp.cbDelivery.DisplayMember = "emp_username"; 

這有效,但它不是100%。我在組合框中獲得了正確數量的字段,但名稱值已被CoreLab.Common取代。

所以它絕對讓db表的連接,並帶回領域適量而不是在正確的價值...

希望這是有道理的。

請幫忙。

+0

也許你會得到一個想法[這裏](http://stackoverflow.com/questions/8104158/population-of-combobox-with-displaymember-and-valuemember) ,這是一個類似的問題。 – rikitikitik

+0

也許你只需要一個'DataTable'而不是'OracleDataTable' – V4Vendetta

回答

0

感謝所有的反饋。我嘗試了所有的建議,最後我找到了一個例子並修改它爲我工作。這是下面的工作代碼:

 OracleDataReader dr; 
     OracleConnection conn = new OracleConnection(); 
     conn.ConnectionString = "....string...."; 
     string query = "SELECT distinct dd.delivery_bay_code FROM dc_delivery dd, dc_grv dg WHERE delivery_complete_datetime is null AND dd.dc_delivery_id_no = dg.dc_delivery_id_no"; 
     OracleCommand cmd = new OracleCommand(query, conn); 
     conn.Open(); 
     dr = cmd.ExecuteReader(); 
     while(dr.Read()) 
     { 
      if (dr[0].ToString().Length > 2) 
       cbDelivery.Items.Add(dr[0].ToString()); 
     } 
     conn.Close(); 
0

事情是這個 -

 rp.cbDelivery.DataSource = dt 
     rp.cbDelivery.DisplayMember = "emp_username"; 
     rp.cbDelivery.ValueMember = "emp_username"; 

另外隨着Datatable dt= new DataTable();代替OracleDataTable dt = new OracleDataTable();

0

分配ValueMember也嘗試:

rp.cbDelivery.ValueMember = 「emp_username」;

0

在我看來,你應該專注於以下行:

rp.cbDelivery.DisplayMember = "emp_username"; 

的問題可能是由一個事實,即DataTable列名不包括你指的是一個引起的。以下是這可能再現你的問題的例子:

dt.Columns.Add("Id", typeof(int)); 
dt.Columns.Add("Name", typeof(string)); 

dt.Rows.Add(new object[] { 1, "Alex" }); 
dt.Rows.Add(new object[] { 2, "John" }); 
dt.Rows.Add(new object[] { 3, "Mary" }); 

comboBox1.DataSource = dt; 
comboBox1.DisplayMember = "Name_with_typo"; //here you should use Name 
0

你應該先用DisplayMember這樣的:

OracleConnection conn = new OracleConnection("....string...."); 
string query = "SELECT emp_username FROM dc_emp"; 
OracleDataAdapter da = new OracleDataAdapter(query,conn); 
OracleDataTable dt = new OracleDataTable(); 
da.Fill(dt); 
rp.cbDelivery.DisplayMember = "emp_username"; 
rp.cbDelivery.DataSource = dt;