2

在此处输入图像描述

我想将数据从数据库中插入到我的 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。

所以它肯定会连接到数据库表并带回正确数量的字段但不是正确的值......

希望这是有道理的。

请帮忙。

4

5 回答 5

0

像这样的东西-

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

也尝试使用Datatable dt= new DataTable();而不是 OracleDataTable dt = new OracleDataTable();

于 2012-11-28T09:52:20.250 回答
0

也分配 ValueMember:

rp.cbDelivery.ValueMember = "emp_username";

于 2012-11-28T09:52:22.670 回答
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
于 2012-11-28T09:52:53.937 回答
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;
于 2012-11-28T09:57:08.710 回答
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();
于 2012-11-28T12:54:00.513 回答