如何在带有复选框的列表框中显示1个月的数据库



所以我可以在列表框中显示每日数据,但如果我使用复选框,它将显示1个月的数据,该怎么办?

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
//label1.Text = monthCalendar1.SelectionStart.ToString();
lstres.Items.Clear();
con.Open();
string date = monthCalendar1.SelectionStart.ToString();

SqlCommand cmd = new SqlCommand("Select * from reservation where Date = '" + date + "'", con);
//sqlcommand cmd= to choose all the data from database where date is from Date
DataTable dt = new DataTable();
// datatable = to represents data table
SqlDataAdapter da = new SqlDataAdapter(cmd);
//sqldataadapter = to link database connection
da.Fill(dt);
//DateTime dateAndTime = DateTime.Now;
// Will give you smth like 25/05/2011
//lstres.Text = dateAndTime.ToString("dd/MM/yyyy");
foreach (DataRow dr in dt.Rows)
//foreach to transfer items in an array and display it
{
string dateonly = Convert.ToDateTime(dr["Date"]).ToString("dd/MM/yyyy");
string show = dateonly + " " + dr["TimeStart"].ToString() +
" " + "-" + " " + dr["TimeEnd"].ToString() + "  " + dr["RoomType"].ToString();
lstres.Items.Add(show);
}
con.Close();
}

这个代码是为每日而写的,但如何为每月而写呢?

要得到整个月,你需要计算月的第一天和下个月的第一日,你可以这样做:

DateTime selectedDate = monthCalendar1.SelectionStart;
DateTime fromDate = date.AddDays(-date.Day + 1);
DateTime toDate = fromDate.AddMonths(1);

然后,您可以在sql命令中植入它们,如下所示:

SqlCommand cmd = new SqlCommand($"Select * from reservation where Date >= '{fromDate:yyyy-MM-dd}' AND Date < '{toDate:yyyy-MM-dd}'", con);