我有一个问题。我在组合框中显示数据库中的数据。我选择了3列:StudentID,Surname,Course,它们显示在下拉菜单中。 选择项目时,是否有可能只在组合框中显示一列,例如只有StudentID?
谢谢,
马
private void Form2_Load(object sender, EventArgs e)
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "SELECT StudentID, Surname, Course FROM Students";
OleDbDataReader reader = command.ExecuteReader();
while(reader.Read())
{
comboBox1.Items.Add(reader[0].ToString() + " " + reader[1].ToString() + " " + reader[2].ToString());
}
connection.Close();
}
答案 0 :(得分:0)
当你说选择时,你是否仍然希望将所有三个都放在列表的一部分但只显示ID?你能不能只从阅读器中添加第一项?
private void Form2_Load(object sender, EventArgs e)
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
command.CommandText = "SELECT StudentID, Surname, Course FROM Students";
OleDbDataReader reader = command.ExecuteReader();
while(reader.Read())
{
comboBox1.Items.Add(reader[0].ToString());
}
connection.Close();
}
编辑:
您需要为此创建一个对象,如下所示
private class Student
{
public string Name;
public int Id
public Student(string name, int id)
{
Name = name;
Id = id;
}
//override the tostring to change how it is displayed in the combobox
public override string ToString()
{
return Name + " " + Id.ToString();
}
}
comboBox1.Items.Add(new Student(reader[1].ToString(), reader[0].ToString()));
答案 1 :(得分:0)
如果我理解得很好,你只想显示StudentID字段,但仍然想选择何时这个id,能够使用查询中的其他字段,如果这是你的目标,你可以采取几个路径,一个例子因为你将是以下:
comboBox1.Items.Add(drd["0"].ToString());
comboBox1.ValueMember = drd["0"].ToString();
comboBox1.DisplayMember = drd["1"].ToString();
所以你可以恢复一些信息,但即便如此,你仍然需要所有的obejtos咨询,只需分配添加对象并选择你想要在以下行comboBox1.DisplayMember = "field you want to display";