我对组合框有疑问。首先添加,我尝试通过循环数组将一些项目添加到classTimeComboBox中,并且它可以正常工作。但是,当我尝试将foreach循环与if条件结合使用时,组合框在其中不显示任何内容。有人可以帮我解决这个问题吗?
Here is my database screenshot (数据库中的所有表均为“短文本”类型。)
private void classTimeComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
string ClassTime = classTimeComboBox.Text;
string ClassDate = classDateBox.Text;
string[] ClassName = { "CL01", "CL02", "CL03", "CL04", "CL05", "CL06", "CL07", "CL08", "CL09" };
if(classTimeComboBox.SelectedItem.ToString() == "08:00")
{
foreach (string x in ClassName)
{
cnnOleDB.Open();
checkAvailableClassRoom.CommandText = "Select * from Uploads where [ClassDate]='" + ClassDate + "' AND [ClassTime]='" + ClassTime + "' AND [ClassName]='" + x + "';";
checkAvailableClassRoom.Connection = cnnOleDB;
OleDbDataReader readDatabase = checkAvailableClassRoom.ExecuteReader();
if (readDatabase.Read() != true)
{
classNameComboBox.Items.Add(x);
}
else
{
}
cnnOleDB.Close();
}
}
}
答案 0 :(得分:0)
OleDbReader.Read()
将阅读器移至下一条记录,然后该方法返回
如果有更多行,则为true;否则为false。否则为假。
因此,如果您希望数据库具有多行,则应将代码更改为此:
while (reader.Read())
{
var stringIdx = reader.GetOrdinal("<string Colum to display in combobox>");
classNameComboBox.Items.Add(reader.GetString(stringIdx));
}
如果您只期望一行,或者不在乎行数,则可以将while
更改为您拥有的if
,只需稍作改动:
if (readDatabase.Read() == true)
{
classNameComboBox.Items.Add(x);
}