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

本文关键字:何获取 获取 数据源 列表 数据库 项目 不相等 | 更新日期: 2023-09-27 18:36:50

我有一个带按钮的月历,当单击按钮并且月历中的选定日期等于数据库列中的值时,我从数据库中使用了一个listbox.datasource,但是之后,当我在月历中选择一个新日期并且所选日期不等于列值时,我想返回我使用的列表的第一个数据源。请注意,我只使用:if(date。等于("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 (DataRow dr in dtDatetime.Rows) { if (date.Equals(dr["date"])) { listBox1.DataSource = ds.Tables[0]; listBox1.ValueMember = "date"; listBox1.DisplayMember = "dayTime"; } else { listBox1.DataSource = defaultList; }
}

如果没有项目,则无法访问 else 语句 - 如果有,所有项目都将匹配日期.. 此代码是您的逻辑错误所在

你需要类似的东西

伪代码:如果 rows.count>0 将数据源设置为 ds.tables[0] 否则数据源=默认列表

否为循环如果有 100 个项目,则设置 100 次没有意义