关闭ds的操作:ds.Clear();
myConn.Close();
if (ds.Tables.Count > 0)
{
   ds.Tables.Remove(TableName.Text);
}连接的操作SqlCommand cmd = new SqlCommand("SELECT * "+
     "FROM  " + TableName.Text,myConn); 
da.SelectCommand = cmd;
da.Fill(ds,TableName.Text);
dataGrid1.DataSource = ds;关闭ds的操作 和 连接的操作 在不同的按钮事件中,(dataGird用的是动态列)问题是 执行了关闭操作后,连接同一个表,dataGrid中始终不显示数据了,那位好兄弟指点一下迷津。

解决方案 »

  1.   

    dataGrid1.DataSource = ds;
    dataGrid1.DataBind();
      

  2.   

    DataSet.Clear 是清除所有表中的所有行。并不清除表。
    所以,请使用DataSet.Tables.Clear来清楚DS中所有的表。而不是表中的所有行。
    解决了记得给分。
      

  3.   

    另外,你的myConn有没有重新Open(最好是重新new一个出来)
      

  4.   

    如果是web系统page类的成员会在一次页面显示的时候,全部解除,所以,如果你在两个事件过程中,就必须new两次ds出来。。
      

  5.   

    我的是winform 的, conn 是重新打开的。
      

  6.   

    好象和 new 一个 SQLConnection 没有什么关系,我整个程序用的都是一个Connection,
    DataSet.Tables.Clear 和  ds.Tables.Remove(TableName.Text);
     都可以清除表,但是如果我在datagrid 中 改了某行某列的值(没有提交到数据库),
    这时关闭连接再打开时,那个值却是已经更改的值。
      

  7.   

    我试了一下,如果不 remove  或 clear table ,
    执行了 ds.clear  操作后,
    再次连接是能够保证 dataGrid 中的数据是 sqlserver 物理表中的原始数据。如果 使用 remove  或 clear table ,
    修改 datagrid 某行某列的值
    不执行了 ds.clear  操作,则再次连接后 某行某列 是修改后的值,而这是我没有执行任何
    提交到数据库操作。我说得明白吗,请大家帮帮我吧。