日期:2014-05-18  浏览次数:20954 次

datagridview更改数据源的问题
三个表
A表:ID1   name1     add1
B表:ID2   name2     add2
C表:ID3   name3     add3

一个datagridview

commstr= "select   *   from   A ";                                   //查询语句
da   =   new   SqlDataAdapter(commstr,   conn);         //SqlDataAdapter
da.Fill(ds, "table ");                                               //填充DATASET                        
dataGridView1.DataSource=ds.Tables[ "table "];//数据显示在窗体中

问题:当改变查询的表时,也就是把= "select   *   from   A“改成= "select   *   from   B”在窗体中显示的数据列就变成了A和B所有的列,再改成C时,就变成ABC所有的列。请问,任何在改变表名的时候,窗体只显示选择的表内容呢?

下边的方法试了,不行。
commstr   =   "select       *       from     "   +   biaoming;
da   =   new   SqlDataAdapter(commstr,   conn);
da.Fill(ds, "table ");
ds.Tables[ "table "].Clear();                     //清空
da.Fill(ds,   "table ");
dataGridView.DataSource=ds.Tables[ "table "];




------解决方案--------------------
clear(),只是内存清空。

而FILL是物理加载,

你每次是物理加载,那你必须物理清空,物理清空请用delete命令。