因为想在同一个窗体上显示多个表,上面放有datasouce adoquery 和cxgrid控件,query连数据库,souce连query,grid连souce,我以为通过改变query连接不同的表,grid上就能显示不同的数据,结果发现只有第一次grid创建列时所用到的表能完整显示,其它表只有与第一个表有相同列的数据能够显示,我想到一个最笨的办法,就是多放几对grid,souce和query不过太麻烦,各位哥哥有什么好方法吗,cxgrid动态的清除列,与创建列是怎么实现的,小菜鸟在此先谢过各位哥哥了。

解决方案 »

  1.   

    可以的,你重新OPEN就可以了。
      

  2.   

    宝马兄,不行啊,重新open,sql连接的数据表是变了,但是cxgrid中的列名没有变啊,你说的重新open是cxgrid重新OPEN?我没听过呢,能明显一下吗
      

  3.   

    [email protected],我加你qq了,先谢过啊
      

  4.   

    与其用代码去不断的动态创建列和清除列,应该还是多放几个datasource之类的要不麻烦些吧
    不知道是否正确?
      

  5.   

      ds1.DataSet := adoTblr;
      adoTblr.Active := True ;
      cxgrdbtblvwGrid1DBTableView1.DataController.DataSource:=ds1;
      cxgrdbtblvwGrid1DBTableView1.ClearItems;//清楚cxgrid的界面上的结构
      cxgrdbtblvwGrid1DBTableView1.DataController.CreateAllItems;//创建当前ds中的表结构,