【问题标题】:Only view rows in datagrid that meet a certain condition [closed]仅查看满足特定条件的数据网格中的行[关闭]
【发布时间】:2013-12-12 13:00:14
【问题描述】:
我的数据网格 (dataGridView1) 中的一列称为 DatePaid 并单击按钮,即:
private void viewOverdue_Click(object sender, EventArgs e)
{
// details here
}
我希望它在 DatePaid 列中显示数据网格中 2 周或更早的所有行(使用变量 cRentStart 作为起点 - 这是日期本身采用 dd/mm/yyy 格式)。所有日期必须采用 dd/mm/yyyy 格式。
【问题讨论】:
标签:
c#
winforms
date
datagrid
【解决方案1】:
您必须过滤完整的记录列表,然后重新绑定新的过滤列表。
private void viewOverdue_Click(object sender, EventArgs e)
{
Records[] filteredRecords = allRecords.Where(x => x.DatePaid <= cRentStart).ToArray();
dateGridView1.DataSource = filteredRecords;
dateGridView1.DataBind();
}
如果两个值实际上都是日期类型,这应该可以工作,否则您必须将值转换为日期。
例如,如果它们是字符串,则查询应如下所示:
Records[] filteredRecords = allRecords.Where(x => Convert.ToDateTime(x.DatePaid) <= Convert.ToDateTime(cRentStart)).ToArray();
请注意,此转换仅在应用程序的文化将您的字符串视为 dd/MM/yyyy 时才有效,例如,如果您的文化是 en-US,它会将其视为 MM/dd/yyyy
记录类应该被你自己的课程替换