DataGridView根据字母删除匹配的行1.我有一个datagridives控件 读取了数据库内的数据后,有一个列(字段)是拼音码的,写入数据库时直接将客户名称转为拼音码写入到拼音码字段了。
2.我现在想在一个textbox控件里输入字母,然后根据这个字母和datagridview指定行和列的拼音码按从左到右比较,如果不匹配就删除这行。这样形成按拼音检索功能。

解决方案 »

  1.   

    用BindingSource绑定表格,然后用筛选:
                BindingSource bs = new BindingSource();
                bs.DataSource = 数据源(DataTable);
                表格对象.DataSource = bs;
                bs.Filter = "这里写上用户选择条件,表格就只显示用户选择的数据了";
                //筛选属性支持=和like
                //string.Format("str_Name like '*{0}*'", this.m_edtName.Text);
      

  2.   

    差点以为是web控件...
    ---------------------------
    然后根据这个字母和datagridview指定行和列的拼音码按从左到右比较
    ---------------------------
    什么叫从左到右比较?直接indexOf不行吗?
    遍历datagridview的row,对指定的某几列cell检查匹配,是的话就datagridview.deleteRows[index]?
    PS:我随便说说的,N年没弄过winform的飘过,听楼下舍得打开VS的弄出代码来吧,下班走淫咯·~
      

  3.   

    1.写textchange事件
    2.textchange事件里,可以Linq去操作DataGridView的数据源,然后重新绑定
      

  4.   

    1、为查询textbox添加textchange事件(事件名记不清了  自己查下吧)
    2、在textchange事件内获取textbox的值a,根据a查询数据库  可以用模糊匹配  语句如下:
                 "select * from table where 拼音字段 like '"+a+"%' ";
    3、将返回结果绑定DataGridView这样在每输入一个字母  都会对应更新一次DataGridView
    坏处就是用户体验不好  每次输入会刷新
      

  5.   


    isjoe兄得方法不错  不过只能往少的匹配  而且偶尔不能根据输入动态筛选  还有语句应该是 '{0}*',而不是 '*{0}*',他需要从左往右匹配此外   二楼死猫  鉴定完毕
      

  6.   

    用like会有个问题,比如我有拼音码是ABCD ,BCD,EFG 如果我输入一个C,只要是有C的会给读出来,但不是我想要的,我想要的是输入B时只读取B开头的,而不是把ABCD也读出来。一个一个字母匹配下去。不匹配的就直接删除行,
      

  7.   

    indexOf 我尝试了一下,但没成功,不知是怎么回事,indexOf还有个问题是区分大小写的。
      

  8.   

    delete from 表 where 列 like '%textbox的值%'  然后重新绑定数据 
      

  9.   

    用like会有个问题,比如我有拼音码是ABCD ,BCD,EFG 如果我输入一个C,只要是有C的会给读出来,但不是我想要的,我想要的是输入B时只读取B开头的,而不是把ABCD也读出来。一个一个字母匹配下去。不匹配的就直接删除行,
      

  10.   

    还有问一下 你的拼音码转换的方法 完整吗 我找了好多 都不行 有些字 都转换不过来   如果不介意 可否给我发一份 转换的方法 谢啦 (邮箱:[email protected]