2012-03-08 137 views
2

我刚刚完成了一些成功过滤2个datetimepickers - startSchedule和endSchedule之间截止日期的代码。在DataGridView中显示已过滤的行

目前,当我希望if语句被启动时,我不知道要在if语句中放入哪个代码来显示datagridview中的过滤行。

datagridview包含以下列 - 模块,描述,截止日期,优先级。

如何在满足条件的if语句中显示适当的行。

如果您需要更多信息,请告知我,谢谢。

这里是我到目前为止的代码:你如何有你的DataGridView设置

private void scheduleButton_Click(object sender, EventArgs e) 
    { 

     DateTime startSchedule = startDate.Value.Date; 
     DateTime endSchedule = endDate.Value.Date; 
      foreach (DataGridViewRow dr in TaskTable2.Rows) 
       { 
        string deadline = dr.Cells["Deadline"].Value.ToString(); 
        DateTime deadlineRow = Convert.ToDateTime(deadline); 
        if (startSchedule <= deadlineRow && deadlineRow <= endSchedule) 
        { 
         MessageBox.Show("Display Row"); // display filtered rows here. 

        } 
       } 
      } 
+0

任何人都有什么代码放在if语句代码部分的想法? – Rob 2012-03-08 20:12:30

+0

我认为符合if语句要求的行是你想要显示的行,还是我有向后的@ user1163762? – ImGreg 2012-03-08 20:29:31

回答

1

依赖。理想情况下,您可能会从SQL的这一方面做到这一点,但如果您愿意的话,您可以这样做。

也许只是隐藏的行,如果你的ifstatement不满足:

else 
dr.Visible = false; 

让我知道如果我误解你想要什么。

0

反问:你用什么作为DataGridView的.Datasource?

这是一个很好的概念,但实际上并没有过滤DataGridView的行。而是过滤DGV正在显示的数据源。例如,如果您有一个DataTable作为数据源,则可以使用DataTable.Select方法来过滤数据源。由于我的应用程序通常具有业务对象,因此我使用TimVW的FilterList作为对象的通用列表,我将其设置为DGV的数据源。 FilterList有一个.Filter()方法来过滤数据源。只要过滤DGV的.Datasource属性中的对象,DGV就会更新屏幕上显示的行。