本帖最后由 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]) < 0)
- {
- return (_flex.Cols[col].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[index]) < 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 "";
- }
复制代码
|