写了个程序            String sqlstr="select * from sites";
            myadapter = new OleDbDataAdapter(sqlstr, myOleDbConnection);
            ds=new DataSet();
            myadapter.Fill(ds,"Table1");
            dataGridView1.DataSource = ds.Tables["Table1"];绑定了dataGridView1后来改变了ds其中的数值
.................              if (m == 0)
                {
                    ds.Tables["Table1"].Rows[i]["sitestate"] = "无法访问";
                    MessageBox.Show(ds.Tables["Table1"].Rows[i]["siteurl"].ToString().Trim()+"访问异常");
                }
                else
                    ds.Tables["Table1"].Rows[i]["sitestate"] = "可以访问";
             
                myadapter.Update(ds,"Table1");....................于是希望DataGridView1也能刷新,显示出改变后的数据。看网上的方法是重新绑一次于是我就
 dataGridView1.DataSource = null;
dataGridView1.DataSource = ds.Tables["Table1"];但DataSet ds没有用Adapter重新Fill.因为我觉得ds.Tables["Table1"].Rows[i]["sitestate"] = "可以访问";已经是改变了其中的数值,没必要重新Fill
然而什么也没发生,DataGridView也没有刷新(注意我是winform程序,DataGridView是没有bind函数的)

解决方案 »

  1.   

       重新绑定应该是可以,不知道您是怎么实现,或者要什么效果,如果想事先通过设定DataGridView中Cell的值,并且同时更新后台绑定的(DataSet)数据,有如下方法,我是这么做的:
       DataRowView dr = DataGridView.Rows[i].DataBoundItem as DataRowView;
       dr.BeginEdit(); //修改数据视图的值不会影响到DataGrid及DataTable
       dr["DataPropertyName"] = 值;
       //直接修改数据源的值
       dr.EndEdit();
      

  2.   

    也没什么特别的效果,最开始显示时  sitestate 一列是空的,然后一点按钮,刷新DataGridView,该列显示 可以访问或者访问异常                String sqlstr = "select * from sites";
                    ds = new DataSet();  
                    myadapter.Fill(ds, "Table1");
                    dataGridView1.DataSource = null;
                    dataGridView1.DataSource = ds.Tables["Table1"];
    我第二次绑定时只有写全了才能正常的刷新,不写前三句只写前两句就不刷新,我想知道这是为什么
      

  3.   

    datagridview + dataset + bindsource .