繁体   English   中英

C#-用MySql数据库填充ComboBox的意外结果

[英]C# - unexpected result in populating ComboBox with MySql database

在我的类DBConnect ,我具有基于输入查询将ComboBox填充到数据库的功能:

public void POPULATE_COMBOBOX(string query, ComboBox myComboBox)
{
    if (this.OpenConnection() == true)
    {
        MySqlCommand cmd = new MySqlCommand(query, connection);

        MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
        DataTable myDataTable = new DataTable();

        adapter.Fill(myDataTable);
        myComboBox.DataSource = myDataTable; 

        this.CloseConnection();
    }
}

这就是我的使用方式

DBConnect.POPULATE_COMBOBOX(“来自用户的选择名称”,comboBox_Name);

我在“ NAME列中有3行,我希望这3个名称将显示在我的comboBox_Name 但是,相反,我的组合框中有3行System.Data.DataRowView 任何想法如何将那些DataRowView转换为字符串?

您必须告诉组合框要显示的列。

//Preparation
var dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Rows.Add("Name1");
dt.Rows.Add("Name2");

//Setup data binding
myComboBox.DataSource = dt.DefaultView;
myComboBox.DisplayMember = "Name";
myComboBox.ValueMember = "Name";

然后, SelectedItem获取实际的ComboBox项(在本例中为DataRowView),而SelectedValue获取您指定为ComboBox的ValueMember的属性的值

或如何填充您的ComboBox另一种方法是:

MySqlDataReader sqlReader = cmd.ExecuteReader();

while (sqlReader.Read())
{
    myComboBox.Items.Add(sqlReader["Name"].ToString());
}

sqlReader.Close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM