组合框不显示添加的项目(如果条件)

时间:2019-06-03 04:21:25

标签: c#

我对组合框有疑问。首先添加,我尝试通过循环数组将一些项目添加到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();
        }
    }
}

1 个答案:

答案 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);
}