在我的课程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();

10-05 19:55