比如我对其中选中的某行做完操作,点按钮就已经清除该行,只要不显示出来就可以了,没必要在数据集里删除。在线请教各位大哥!

解决方案 »

  1.   

    你查询数据的时候把你要隐藏的过滤掉不就完了例如
    select * from tablename where ycbz=true
      

  2.   

    wudi_1982说的方法完全可以满足你的要求,你也可以
        dbgrid.DataSource.DataSet.Filter :='ycbz=True ';
        dbgrid.DataSource.DataSet.Filtered :=true;
      

  3.   

    wudi跟myanwei的方法不是很合适,因为我的行处理标示字段 ycbz,并没有显示在grid里。
    我想dbgrd.SelectedRows.Clear;或者dbgrd.SelectedRows.Delete;可我试了不可以。
      

  4.   

    shaoyan(爱情已死) 提到用Filter请问dbgrid有Filter吗?????/
      

  5.   

    DBGrid 好像不可以直接在控件里面操作它显示了来的是与数据集的内容一模一样的
      

  6.   

    楼上的说得对 要不你用指针 
    最好是用StringGrid
      

  7.   

    delphi的数据库和dbgrid一旦建立关系,肯定是dbgrid里面的数据改了,数据库里面的数据也跟着改,这是必然的,
        只能通过其它变通的方法:
        多建立一个字段当作标志位,如果不想要这一行显示,则把此行的标志位赋值为false,默认为true,然后,使用楼上说的:    dbgrid.DataSource.DataSet.Filter :='ycbz=True ';
        dbgrid.DataSource.DataSet.Filtered :=true;
    。或者直接改变query的select语句,加一个限制即可。。
        如果使用C#,则可以实现你说的功能,不用这么麻烦,因为 C#的数据是先修改dbgrid,最后再决定dbgrid里面的数据要不要更新到数据库里面。