【发布时间】:2015-12-22 12:33:46
【问题描述】:
我的 datagridview 的过滤器有问题。目前,我在我的数据中应用了 3 种类型的过滤器(由 xml 文件加载):
- 月份过滤器 => 此过滤器使我能够显示与当前所选月份相关的所有数据
- 1 个日期过滤器 => 显示与当前选定日期相关的所有数据
- X 日期过滤器 => 显示与当前选定日期相关的所有数据(最多 31 个)
通过在 CalendarMonth 控件上选择日期来应用过滤器。过滤器在这个方法上被激活:
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
DateTime current_date = this.monthCalendar1.SelectionStart;
if (current_date.Month != this.old_Date.Month || current_date.Year != this.old_Date.Year)
{
(this.dataGridView1.DataSource as DataTable).DefaultView.RowFilter = "DATE LIKE '*/" + current_date.ToString("MM/yyyy") + "'";
System.Console.WriteLine((this.dataGridView1.DataSource as DataTable).DefaultView.RowFilter);
this.old_Date = current_date;
this.label_total.Text = this.calculateSum();
this.label_filter.Text = this.label_total.Text;
this.label_month.Text = current_date.ToString("MMMM (yyyy)");
}
else
{
if (this.monthCalendar1.SelectionEnd.ToString("dd/MM/yyyy").Equals(this.monthCalendar1.SelectionStart.ToString("dd/MM/yyyy")))
{
(this.dataGridView1.DataSource as DataTable).DefaultView.RowFilter = "DATE = '" + this.monthCalendar1.SelectionStart.ToString("dd/MM/yyyy") + "'";
this.label_filter.Text = this.calculateSum();
}
else
{
System.Console.WriteLine("DATE >= '" + current_date.ToString("dd/MM/yyyy") + "' AND <= '" + this.monthCalendar1.SelectionEnd.ToString("dd/MM/yyyy") + "'");
(this.dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("DATE >= '" + this.monthCalendar1.SelectionStart.ToString("dd/MM/yyyy") + "' And DATE <= '" + this.monthCalendar1.SelectionEnd.ToString("dd/MM/yyyy") + "'");
this.label_filter.Text = this.calculateSum();
}
}
}
当我选择了 X 个日期时,问题就来了。选择日期后,我有一个奇怪的错误。事实上,当我选择 12/10 到 12/12 时,过滤器会显示 10 月和 11 月的结果!没有这些日期的 12 月的数据。
过滤器的日志说:
DATE >= '09/12/2015' AND <= '10/12/2015'
DATE >= '09/12/2015' AND <= '11/12/2015'
DATE >= '09/12/2015' AND <= '12/12/2015'
DATE LIKE '*/01/2016'
DATE LIKE '*/12/2015'
正如我们在 GIF 中看到的,其他 2 个过滤器工作正常。但是 X 选择的日期并没有像它应该做的那样工作..
有人知道这个问题吗?
信息:
- 视觉工作室(社区)2015
- C#
- Windows 窗体
- 法文系统(法文日期时间,所以 => dd/MM/yyyy)
PS:如果英文不完美,请见谅。
谢谢。
【问题讨论】:
-
编辑选项似乎不起作用然后我在这里发帖 => 我忘记了论坛消息中的基本信息:“嗨,伙计们。” .
标签: c# windows forms datagridview visual-studio-2015