【发布时间】:2012-03-29 21:43:03
【问题描述】:
我正在尝试通过 2 个日期时间选择器(startDate 和 endDate)过滤 datagridview 中的截止日期列。
datagridview 是TaskTable2, datetimepicker1 是 startSchedule, datetimepicker2 是 endSchedule 和 datagridview 中的截止日期是deadlineRow
到目前为止,我已经获得了以下代码,它成功地使不在所选开始日期和结束日期之间的行不可见。
private void scheduleButton_Click(object sender, EventArgs e)
{
DateTime startSchedule = startDate.Value.Date;
DateTime endSchedule = endDate.Value.Date;
if (startSchedule <= endSchedule)// runs foreach loop if startdate and enddate are valid
{
foreach (DataGridViewRow dr in TaskTable2.Rows)// loops through rows of datagridview
{
string deadline = dr.Cells["Deadline"].Value.ToString(); // gets deadline values
DateTime deadlineRow = Convert.ToDateTime(deadline); // converts deadline string to datetime and stores in deadlineRow variable
if (startSchedule <= deadlineRow && deadlineRow <= endSchedule) // filters deadlines that are => startDate and <= endDate
{
dr.Visible = true; // display filtered rows here.
}
else
{
dr.Visible = false; // hide rows that are not beteen start and end date.
}
}
}
else
{
MessageBox.Show("Please ensure Start Date is set before End Date."); // ensures user selects an end date after the start date.
}
}
但是,我有一些现有的问题:
- 当我选择不显示任何任务的日期范围时,应用程序崩溃并出现以下错误:
'不能使与货币经理职位相关的行不可见'
- 我有一个打印按钮,可以打印过滤后的结果。 但是,它正在打印存储在 datagridview 中的所有数据,即使某些行在按计划按钮时可见 = false,所以我猜我需要使用不同的方法来删除行而不是隐藏它们。
datagridview 绑定到一个 XML 文件,因此只要数据保留在 XML 文件中,就可以从 datagridview 中删除数据以进行过滤和打印。
任何帮助将不胜感激!
谢谢
【问题讨论】:
标签: c# winforms datagridview datetimepicker