找回密码
 立即注册

QQ登录

只需一步,快速开始

zxc9089
中级会员   /  发表于:2018-1-30 09:50  /   查看:5845  /  回复:8
C1FlexGridFilterService.SetFlexGridFilter(grid, filter);
用这种方式可以让FlexGrid在列头进行筛选,有没有什么办法能根据FlexGrid外部文本框数据实现同样效果的实现?

比如外部文本框输入内容,列表中只显示某列和它匹配的数据,但是列表绑定的数据源不发生变动的?

8 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2018-1-30 10:35:14
沙发
您好,flexgrid的自定义的过滤如下:
\Documents\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\ColumnFilter
Documents\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\CollectionViewFilter
请参照,希望能帮到您。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2018-1-30 12:11:19
板凳
那这个filter在列表上的下拉箭头能隐藏吗? 只需要外部控制
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2018-1-30 12:13:04
地板
或者只指定某几列才能筛选?
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-1-30 15:07:18
5#
zxc9089 发表于 2018-1-30 12:13
或者只指定某几列才能筛选?

您好,每一列的过滤都是可以设置的,可以后台制定过滤条件,每一列的Column下有一个allowFilter的属性,来设置。希望能帮到您
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2018-1-30 17:43:36
6#


没有这个选项

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-1-30 18:08:03
7#


不好意思,AllowFilter是Winform平台下的,关于WPF具体定义哪一列请参照下面代码:
  1. // 创建C1FlexGrid
  2. var flex = new C1FlexGrid();

  3. // 在Grid上启用过滤
  4. var gridFilter = new C1FlexGridFilter(flex);

  5. // 在图像类型的列上禁用过滤
  6. var columnFilter = gridFilter.GetColumnFilter(flex.Columns[“Image”]);
  7. columnFilter.FilterType = FilterType.None;

  8. // 在标识符列上禁用值过滤器
  9. columnFilter = gridFilter.GetColumnFilter(flex.Columns[“ID”]);
  10. columnFilter.FilterType = FilterType.Condition;
复制代码
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2019-5-20 11:53:06
8#
本帖最后由 zxc9089 于 2019-5-20 15:21 编辑





在demo中按照方法配置了实现了列不可自定义Filter功能, 但是在列头上还是有一个空白占用了可用空间,导致列头无法正常显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-5-20 16:12:40
9#
按照你需求的功能,可以在开发包这个demo中找到
文档\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\ColumnFilter

对其中的代码做了一点调整,加了一个你说的TextBox,然后绑定了如下的事件代码
这个就完全符合你的需求
  1.         private void _Textboxcolor_TextChanged(object sender, TextChangedEventArgs e)
  2.         {
  3.             // get grid filter
  4.             var f = C1FlexGridFilterService.GetFlexGridFilter(_flex);

  5.             // customize color column filter
  6.             var c = _flex.Columns["Color"];
  7.             var cf = f.GetColumnFilter(c);
  8.             if (cf != null)
  9.             {
  10.                 cf.ValueFilter.Clear();
  11.                 var c1 = cf.ConditionFilter.Condition1;
  12.                 c1.Operator = ConditionOperator.Contains;
  13.                 c1.Parameter = (sender as TextBox).Text;

  14.             }
  15.             // apply changes
  16.             f.Apply();
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部