如何在DataView Rowfilter中使用DATEADD(SQL)? (C#)

时间:2016-10-10 06:36:27

标签: c# sql datagridview dataview rowfilter

我正在使用DataGridView和ComboBox Selection来显示信息。

在SQL中,查询是

SELECT ListID, ListTitle, ListLastModifyDate  WHERE ListLastModifyDate <= DATEADD(MM, -1, GETDATE())

我已经构建了一个代码。

  • 在文本框中写入文本,然后单击“开始”按钮。

  • DataGridView

  • 中显示的匹配数据

现在我想加上这个......

  • 如果我在Combobox中选择项目,则在DatagridView
  • 中显示所选项目的结果
  • 我想显示没有更改数据源的数据

所以我尝试使用DataView的RowFilter ..但发现了一些错误。

代码低于

private void mtcbSiteColSearchCondition_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataView dvSiteCol = new DataView(dtSiteCol);

        if (mtcbSiteColSearchCondition.SelectedItem.ToString() == "all")
        {
            mgrdSiteCollections.DataSource = dtSiteCol;
        }
        else
        {
            DateTime lastModifiedDate = DateTime.Now.AddMonths(-1);
            dvSiteCol.RowFilter = string.Format("SiteColLastModifyDate <= {0}",lastModifiedDate.ToString("yyyy/MM/dd"), mtcbSiteColSearchCondition.SelectedItem.ToString());
            mgrdSiteCollections.DataSource = dvSiteCol;
        }
    }

我不确定什么是对的...

请有人帮助我如何更改该查询...

由于

1 个答案:

答案 0 :(得分:1)

应用RowFilter时使用的规则列在DataColumn对象的Expression属性中。

特别是在对DateTime值进行过滤时,您应将Date值括在#符号中,并以Invariant文化格式表示您的日期

所以你应该写

MerchantAccount

您不清楚您希望如何处理这部分代码。格式表达式中不需要它,因此您应该删除它: dvSiteCol.RowFilter = string.Format("SiteColLastModifyDate <= #{0}#", lastModifiedDate.ToString("MM/dd/yyyy"));