仅查看数据网格中满足特定条件的行

时间:2013-12-12 13:00:15

标签: c# winforms date datagrid

我的数据网格中的一个列( dataGridView1 )被称为 DatePaid ,并且点击了按钮,即:

private void viewOverdue_Click(object sender, EventArgs e)
{
   // details here
}

我希望它在 DatePaid 列中显示数据网格中2周或更长时间的所有行(使用变量 cRentStart 作为起点 - 这是一个日期本身是dd / mm / yyy格式)。所有日期必须采用dd / mm / yyyy格式。

1 个答案:

答案 0 :(得分: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

记录类应该由您自己的课程替换