FlexGrid列筛选功能问题
C1FlexGridFilterService.SetFlexGridFilter(grid, filter);用这种方式可以让FlexGrid在列头进行筛选,有没有什么办法能根据FlexGrid外部文本框数据实现同样效果的实现?
比如外部文本框输入内容,列表中只显示某列和它匹配的数据,但是列表绑定的数据源不发生变动的?
您好,flexgrid的自定义的过滤如下:
\Documents\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\ColumnFilter
Documents\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\CollectionViewFilter
请参照,希望能帮到您。 那这个filter在列表上的下拉箭头能隐藏吗? 只需要外部控制 或者只指定某几列才能筛选? zxc9089 发表于 2018-1-30 12:13
或者只指定某几列才能筛选?
您好,每一列的过滤都是可以设置的,可以后台制定过滤条件,每一列的Column下有一个allowFilter的属性,来设置。希望能帮到您 http://gcdn.gcpowertools.com.cn/forum.php?mod=image&aid=37446&size=300x300&key=6c700963a926a052&nocache=yes&type=fixnone
没有这个选项
zxc9089 发表于 2018-1-30 17:43
没有这个选项
不好意思,AllowFilter是Winform平台下的,关于WPF具体定义哪一列请参照下面代码:
// 创建C1FlexGrid
var flex = new C1FlexGrid();
// 在Grid上启用过滤
var gridFilter = new C1FlexGridFilter(flex);
// 在图像类型的列上禁用过滤
var columnFilter = gridFilter.GetColumnFilter(flex.Columns[“Image”]);
columnFilter.FilterType = FilterType.None;
// 在标识符列上禁用值过滤器
columnFilter = gridFilter.GetColumnFilter(flex.Columns[“ID”]);
columnFilter.FilterType = FilterType.Condition; 本帖最后由 zxc9089 于 2019-5-20 15:21 编辑
在demo中按照方法配置了实现了列不可自定义Filter功能, 但是在列头上还是有一个空白占用了可用空间,导致列头无法正常显示
按照你需求的功能,可以在开发包这个demo中找到
文档\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\ColumnFilter
对其中的代码做了一点调整,加了一个你说的TextBox,然后绑定了如下的事件代码
这个就完全符合你的需求
private void _Textboxcolor_TextChanged(object sender, TextChangedEventArgs e)
{
// get grid filter
var f = C1FlexGridFilterService.GetFlexGridFilter(_flex);
// customize color column filter
var c = _flex.Columns["Color"];
var cf = f.GetColumnFilter(c);
if (cf != null)
{
cf.ValueFilter.Clear();
var c1 = cf.ConditionFilter.Condition1;
c1.Operator = ConditionOperator.Contains;
c1.Parameter = (sender as TextBox).Text;
}
// apply changes
f.Apply();
页:
[1]