找回密码
 立即注册

QQ登录

只需一步,快速开始

today

注册会员

6

主题

23

帖子

55

积分

注册会员

积分
55
today
注册会员   /  发表于:2021-11-1 11:24  /   查看:5812  /  回复:11
1金币
本帖最后由 Richard.Ma 于 2021-11-12 10:45 编辑

c1TrueDbGrid过滤条中如果内容包含有 %时,过滤时会出错。
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

11 个回复

正序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-23 10:29:37
12#
yin_tb 发表于 2021-11-23 09:58
看帖子突然看到这个问题,我也遇到过。我记得我是用.NET的dataview,设置它的rowfilter条件时报错,解决办 ...

嗯,这个已经和研发确认过了,准确的说是微软MSFilter过滤器的限制,
本身就无法支持字符串中间出现%


回复 使用道具 举报
yin_tb
高级会员   /  发表于:2021-11-23 09:58:32
11#
看帖子突然看到这个问题,我也遇到过。我记得我是用.NET的dataview,设置它的rowfilter条件时报错,解决办法是,我把过滤字符replace一下,把%用半角的【】括起来。不只是%号,有好几个字符过滤都会报错。左【也会报错的。马老师说这个是BUG,如果是,那这也是.NET的BUG,呵呵
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-4 10:05:25
9#
本帖最后由 Richard.Ma 于 2021-11-12 10:44 编辑

这个问题已经作为bug:C1WIN-26081提交给研发,有新的进展我会在帖子中反馈
回复 使用道具 举报
today
注册会员   /  发表于:2021-11-3 18:37:42
8#
要把那个有百分号,整个复制的过滤条过滤,看会不会出错
回复 使用道具 举报
Tachiro
高级会员   /  发表于:2021-11-3 18:31:17
7#
试试看我的代码,可以用 % 符号查询!


  1. private void c1Grid_Filter(object sender, FilterEventArgs e)
  2. {
  3.     var dataView = ((DataTable)c1Grid.DataSource).DefaultView;

  4.     if (dataView.RowFilter == e.Condition)
  5.     {
  6.         return;
  7.     }

  8.     var condition = e.Condition;

  9.     if (condition.Length != 0)
  10.     {
  11.         condition = e.Condition;

  12.         for (var i = 0; i < c1Grid.Splits[0].DisplayColumns.Count; i++)
  13.         {
  14.             if (!condition.Contains($"[{c1Grid.Columns[i].Caption}]"))
  15.             {
  16.                 continue;
  17.             }

  18.             var paramIndex = condition.IndexOf('\'', condition.IndexOf($"[{c1Grid.Columns[i].Caption}]", StringComparison.Ordinal)) + 1;
  19.             condition = condition.Insert(paramIndex, "*");
  20.         }
  21.     }

  22.     dataView.RowFilter = condition;
  23. }
复制代码


本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-1 18:00:42
6#
我明白你说的意思,这个算是目前产品的bug,没有去提供转义%字符串的功能,这个bug我会提交给研发在新版本修复,目前暂时没有什么好的解决方案
回复 使用道具 举报
today
注册会员   /  发表于:2021-11-1 17:28:50
5#
我这个 % 是内容里面包含的,是不想做 通配符
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-1 16:58:07
4#
你好,确认了一下,目前控件本身的限制,%只能作为通配符出现在字符串的最前端或者最后端,没法在中间作为通配符使用,

你这边的例子中也是在中间作为通配符用了,但是你想要作为实际的%字符来用,这个暂时没有什么办法解决
回复 使用道具 举报
today
注册会员   /  发表于:2021-11-1 15:10:02
3#
已上传例子

本帖子中包含更多资源

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

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-1 12:20:59
2#
请上传一个demo来重现问题
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部