当项目与数据库中的值不相等时如何取回列表的数据源

How to get back a datasource for a list when an item is not equal value from database

我有一个带按钮的 monthcalendar,当单击一个按钮并且 monthcalendar 中的 selected 日期等于数据库列中的值时,我正在使用数据库中的 listbox.datasource,但是在那之后,当我 select monthcalendar 中的新日期和 selected 日期不等于列值时,我想要返回我使用的列表的第一个数据源。 请注意,我只使用: if(date.Equals("20160322")) 没有 foreach 它工作正常但没有 foreach 循环遍历列

private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < defaultList.Length; i++)
        {
            listBox1.Items.Add(defaultList[i]);
        }
        string date = monthCalendar1.SelectionStart.Date.ToString("yyyyMMdd");
        string connetionString = null;
        MySqlConnection connection;
        MySqlCommand command;
        MySqlDataAdapter adapter = new MySqlDataAdapter();
        DataSet ds = new DataSet();
        int i = 0;
        string sql = null;
        connetionString = "datasource=localhost; database=bokning;port=3306;username=root;password=666666";
        sql = "select date,dayTime from newsystem where date='" + date + "'";
        connection = new MySqlConnection(connetionString);
        try
        {
            connection.Open();
            command = new MySqlCommand(sql, connection);
            adapter.SelectCommand = command;
            adapter.Fill(ds);
            adapter.Dispose();
            command.Dispose();
            connection.Close();

            dtDatetime = ds.Tables[0];
            foreach (DataRow dr in dtDatetime.Rows)
            {

                if (date.Equals(dr["date"]))
                {

                    listBox1.DataSource = ds.Tables[0];
                    listBox1.ValueMember = "date";
                    listBox1.DisplayMember = "dayTime";
                }
                else
                {
                    //listBox1.Items.Clear();
                    listBox1.DataSource = defaultList;
                }                                                          
          }

        }
        catch (Exception ex)
        {
            MessageBox.Show("Cannot open connection ! ");
        }
    }

您的代码:

foreach(dtDatetime.Rows 中的 DataRow dr) { 如果 (date.Equals(博士["date"])) { listBox1.DataSource = ds.Tables[0]; listBox1.ValueMember = "date"; listBox1.DisplayMember = "dayTime"; } 别的 { listBox1.DataSource = 默认列表; }<br> }

如果没有项目,则无法到达 else 语句 - 如果有,所有项目都会匹配日期。这段代码是您的逻辑错误所在

你需要这样的东西

伪代码:if rows.count>0 set datasource to ds.tables[0] else datasource=defaultlist

没有for循环 如果有 100 个项目,则设置 100 次毫无意义