【问题标题】: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

    记录类应该被你自己的课程替换

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 2014-02-18
      • 2020-09-14
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 2021-04-29
      相关资源
      最近更新 更多