如何为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]