请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

zhangyi

初级会员

31

主题

90

帖子

269

积分

初级会员

积分
269

活字格认证

zhangyi
初级会员   /  发表于:2014-12-7 00:14  /   查看:7987  /  回复:9
您好,我现在有这样一个需求:
   编码    名称
  001      电视机
  002      电冰箱
  003     电脑
我想用findrow方法 由用户输入关键字,快速定位到相应的行
比如输入   "脑"   时 ,将当前行设为 003  电脑  这一行
这用findrow方法能实现吗?如果方便,请提供一下实现的代码。
我尝试这样:
this.grid1.Row = this.grid1.FindRow("脑" , 1, this.grid1 .Col , false  , false  , true );
没有达到想要的 模糊查找的功能(类似sql 的like)
先谢谢!

9 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-12-8 14:27:00
沙发
回复 1楼zhangyi的帖子

有关FindRow的方法,代码参考如下:
  1. void _btnFind_Click(object sender, EventArgs e)
  2.         {
  3.             // use the regular FindRow
  4.             var index = this._flex.FindRow(_txtSearch.Text, 1, _flex.Col, false, true, true);
  5.             if (index > -1)
  6.             {
  7.                 this._flex.Row = index;
  8.                 C1.Win.C1FlexGrid.CellStyle cs = this._flex.Styles.Add("myStyle");
  9.                 cs.Font = new Font("Tahoma", 10, FontStyle.Bold);
  10.                 cs.ForeColor = Color.Red;
  11.                 this._flex.SetCellStyle(index, 1, cs);
  12.             }
  13.         }
复制代码

这段代码的意思是查询TextBox中的Text,查到后将C1FlexGrid.Row设置为此行,并设置颜色。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2014-12-8 16:18:00
板凳
回复 2楼Alice的帖子

您好,我刚才试了您的代码,没有达到 模糊 查询的功能
  编码    名称
  001      电视机
  002      电冰箱
  003     电脑
我想用findrow方法 由用户输入关键字,快速定位到相应的行
比如输入   "脑"   时 ,将当前行设为 003  电脑  这一行

(类似sql 的like)

您这段代码一定要全匹配才能搜索得到,是不是版本问题?
我这里  
版本:4.6.20133.795
运行时版本:v4.0.30319
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-8 17:56:00
地板
回复 3楼zhangyi的帖子

FindRow是全匹配的搜索。
对于你的需求,你可以使用AutoSerch功能,该功能指对于用户输入的搜索结果,将会高亮包含这个字母的单元格。
中文文档:http://www.gcpowertools.com.cn/d ... #!Documents/_84.htm
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2014-12-8 20:25:00
5#
回复 4楼Alice的帖子

我是在一个textbox里输入 模糊查询的关键字,点查询后反映在flexgrid上,我目前已用一个笨方法解决,看了版本发的连接,但不知如何操作
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-9 10:50:00
6#
回复 5楼zhangyi的帖子

有关AutoSearch的用法:
将AutoSearch设置为非None值,比如FromTop。
然后在运行时候,将鼠标置于【编码】那列,然后键盘上输入3,自动就会跳到含有3的单元格。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2014-12-9 11:24:00
7#
回复 6楼Alice的帖子

您好,我试了这个属性,不是模糊包含,是开头包含

比如列中有一行是 a001
它只能搜索到  a ,a0,a00,a001 这样的关键字
而我是要模糊包含,比如 00,01,001这样的效果
就类似sql中的: 列名 like '%00%'

评分

参与人数 1金币 +100 收起 理由
Alice + 100 反馈解决方案,送上金币奖励

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-9 14:30:00
8#
回复 7楼zhangyi的帖子

谢谢你对该问题的反馈,对以后解决同类问题会有帮助,稍后会就本反馈给出金币奖励。
请问你最后还是采用FindRow方法自己写代码实现的么?还有什么需要帮助解决的地方?
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zhangyi
初级会员   /  发表于:2014-12-9 16:59:00
9#
回复 8楼Alice的帖子

在没有好的解决方法的情况下,我后来用了个笨办法 ,非常感谢版主对问题的跟踪和赠送的金币

          //flexgrid的findRow方法目前无法达到模糊查找 改用字典查找
            Dictionary<int, string> di = new Dictionary<int, string>();
            for (var i = 1; i < grid.Rows .Count; i++)
            {
                di.Add(i, grid[i, grid.Col].ToString());
            }
            foreach (var r in di)
            {
                if (r.Value.ToLower ().Contains(e.Key.ToLower ()))
                {
                    grid.Row = r.Key;
                    break;
                }
            }
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-9 17:45:00
10#
回复 9楼zhangyi的帖子

谢谢你的代码反馈。
如果有什么问题欢迎开贴交流。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部