【问题标题】:Filter an integer using Like in BindingSoure.Filter or DataView.RowFilter使用 BindingSoure.Filter 或 DataView.RowFilter 中的 Like 过滤整数
【发布时间】:2019-10-10 18:04:51
【问题描述】:

我试图过滤一个DataView,它有多个列,其中一些是数值。输入字符串时一切正常,但是一旦输入了数值(例如检查快递#),它就会过滤掉任何内容。

过滤前我的数据如何显示:

过滤后我的数据如何显示:

我的代码如下:

private void tbxSearchCourier_KeyUp(object sender, KeyEventArgs e)
    {
        string outputInfo = "";
        string[] keyWords = tbxSearchCourier.Text.Split(' ');

        foreach (string word in keyWords)
        {
            if (outputInfo.Length == 0)
            {
                outputInfo = "('Courier #' LIKE '%" + word + "%' OR Name LIKE '%" + word + "%' OR Branch LIKE '%" + word + "%' OR 'Contact Number' LIKE '%" + word
                    + "%' OR 'Email Address' LIKE '%" + word + "%')";
            }
            else
            {
                outputInfo += " AND ('Courier #' LIKE '%" + word + "%' OR Name LIKE '%" + word + "%' OR Branch LIKE '%" + word + "%' OR 'Contact Number' LIKE '%" + word
                    + "%' OR 'Email Address' LIKE '%" + word + "%')";
            }
        }
        CourierDV.RowFilter = outputInfo;
    }

我在网上搜索了解决方案,但找不到任何可行的方法。为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 您已将列名放在 '' 之间,这使其成为字符串文字。如果列名很复杂,请在列名周围使用[]。此外,若要将整数列与 LIKE 运算符进行比较,应先将其转换为字符串。
  • 为了使过滤器更具可读性,使用 String.Format 混合过滤器字符串和输入值。
  • 感谢@RezaAghaei,我忘记使用该死的[] 而不是''

标签: c# .net winforms dataview bindingsource


【解决方案1】:

请考虑以下注意事项:

  • 您已将列名放在'' 之间,这使其成为字符串文字。

  • 如果列名很复杂,请在列名周围使用[]

  • 要将integer 列与LIKE 运算符进行比较,应首先将其转换为string,因为LIKEstring 运算符。

  • 还要确保您的列名是 Courier #,而不是标题/标题文本。

示例

dataView.RowFilter = "Convert([Some Column], System.String) LIKE '12%'";

更多信息

要详细了解过滤器支持的语法,请查看DataColumn.Expression

【讨论】:

  • 感谢您的回复。不幸的是,它不想工作。任何其他想法为什么?
  • 肯定会奏效的。创建一个干净的测试并查看结果。这是我所做的测试:var dt = new DataTable(); dt.Columns.Add("A", typeof(int)); dt.Rows.Add(123); dt.Rows.Add(111); this.dataGridView1.DataSource = dt; dt.DefaultView.RowFilter = "Convert(A, System.String) LIKE '12%'";
猜你喜欢
  • 1970-01-01
  • 2019-05-05
  • 2021-08-24
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多