Richard.Ma 发表于 2020-3-24 10:12:00

如何为Flexgrid创建一个支持模糊查询的过滤行

本帖最后由 Richard.Ma 于 2020-3-24 10:55 编辑

在使用Flexgrid时,我们可以用它内置的过滤器来进行数据过滤,但是这个过滤器使用需要点开过滤弹窗后设置条件,相对麻烦一些

如果想要直接在表格中使用首行作为过滤行,开发包中提供了一个示例“ComponentOne Samples\WinForms\v4.5.2\C1FlexGrid\CS\FilterRow”
可以根据首字母来进行过滤,过滤后效果如下


这个基本上可以实现我们的需求,但是还是有一个问题,无法实现模糊过滤(全字匹配)
这个问题我们可以通过修改以下的代码来改变过滤方式

private string BuildFilterExpression(int col, string expr)
                {
                        // operators we recognize
                        string oper = "<>=";

                        // no operators? use 'like' for strings, = for other types
                        if (oper.IndexOf(expr) < 0)
                        {
                return (_flex.Cols.DataType == typeof(string))
                  ? string.Format(" like '*{0}*'", expr)
                  : string.Format(" = '{0}'", expr);
            }
                        
                        // look for end of operators
                        for (int index = 0; index < expr.Length; index++)
                        {
                              if (oper.IndexOf(expr) < 0)
                              {
                                        string retval = expr.Substring(0, index) + " ";
                                        retval += string.Format("'{0}'", expr.Substring(index).Trim());
                                        return retval;
                              }
                        }

                        // if we got here, the condition must be bad (e.g. ><)
                        Debug.WriteLine("Can't build filter expression.");
                        return "";
                }


页: [1]
查看完整版本: 如何为Flexgrid创建一个支持模糊查询的过滤行