【问题标题】:Displaying filtered rows in DataGridView在 DataGridView 中显示过滤的行
【发布时间】:2012-03-08 16:58:25
【问题描述】:

我刚刚完成了一些代码,这些代码成功过滤了介于 2 个日期时间选择器 - startSchedule 和 endSchedule 之间的截止日期。

目前 if 语句在我想要的时候启动,但我不确定在 if 语句中放入哪个代码以在 datagridview 中显示过滤后的行。

datagridview 具有以下列 - 模块、描述、截止日期、优先级。

如何在if语句中显示符合条件的相应行。

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

这是我目前的代码:

 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.

                    }
                }
            }

【问题讨论】:

  • 有人知道在 if 语句代码部分中放置什么代码吗?
  • 我假设满足 if 语句要求的行是您希望可见的行,还是我向后 @user1163762?

标签: c# winforms datagridview


【解决方案1】:

取决于您如何设置 DataGridView。理想情况下,您可能会从 SQL 方面执行此操作,但如果您愿意,也可以这样做。

如果您的 if 语句不满足,也许只是隐藏该行:

else
dr.Visible = false;

如果我误解了你想要什么,请告诉我。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多