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