【问题标题】:Date filter for DataGridViewDataGridView 的日期过滤器
【发布时间】:2019-05-29 18:11:18
【问题描述】:

我需要为 DataGridView 创建一个日期过滤器,通过此代码获取数据

    DataSet dataSet = new DataSet();
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
    OleDbDataAdapter dataAdapter1 = new OleDbDataAdapter();

    string query = "select * from Договор";
    string query1 = "select * from Поставщики";

    conn = new OleDbConnection(conn_string);

    dataAdapter.SelectCommand = new OleDbCommand(query, conn);
    dataAdapter1.SelectCommand = new OleDbCommand(query1, conn);

    dataAdapter.TableMappings.Add("Table", "Договор");
    dataAdapter1.TableMappings.Add("Table", "Поставщики");

    dataAdapter.Fill(dataSet);
    dataAdapter1.Fill(dataSet);

    BindingSource dogSource = new BindingSource();
    dogSource.DataSource = dataSet;
    dogSource.DataMember = "Договор";
    dataGridView1.DataSource = dogSource;

    BindingSource postSource = new BindingSource();
    postSource.DataSource = dataSet;
    postSource.DataMember = "Поставщики";

    DataGridViewComboBoxColumn comboColumn = new DataGridViewComboBoxColumn();
    comboColumn.HeaderText = "Поставщики";
    comboColumn.DataSource = postSource;

    comboColumn.DataPropertyName = "Код поставщика";

    comboColumn.DisplayMember = "Название";

    comboColumn.ValueMember = "Код поставщика";

我以前用这段代码过滤数据,但现在它不起作用,我猜是因为DataSource。

    DataView dv = new DataView(dt);
    dv.RowFilter = string.Format(" CONVERT([Дата заключения], 'System.DateTime') >= '{0:dd.MM.yyyy}' AND CONVERT([Дата заключения], 'System.DateTime') <= '{0:dd.MM.yyyy}'",
    dateTimePicker1.Value.ToShortDateString());;
    dataGridView1.DataSource=dv;

我会给予任何帮助,谢谢。

【问题讨论】:

  • 日期不是字符串,因此不清楚为什么必须转换 Дата заключения 或为什么要将日期转换为字符串进行比较。还有相当数量的其他矫枉过正。无论如何,允许可能没有数据落入通过的范围
  • @NatPongjardenlarp,是的,你是对的,不需要转换,但它仍然无法正常工作,甚至标题都消失了,所以这就是为什么我确定 DataSource 字符串中的问题并且我已经不知道如何解决。

标签: c# datetime datagridview


【解决方案1】:

不确定是否正确,但对我来说已经解决了。

DataTable all = dataSet.Tables[0];
DataView dv = new DataView(all);
dv.RowFilter = string.Format(" [Дата заключения] >= '{0:dd.MM.yyyy}' AND [Дата заключения] <= '{0:dd.MM.yyyy}'", dateTimePicker1.Value.ToShortDateString());
dataGridView1.DataSource=dv;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2015-08-30
    • 2014-10-20
    相关资源
    最近更新 更多