2012-11-28 126 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;