dataGridView和一个DataTable绑定
现在用其他方式而不是直接在DataGridView对DataGridView进行修改
比如
我往PictureBox中添加了一个点,根据该事件,设置DataGridView中的某个元素的值
比如
DataGridView结构
点 X坐标 Y坐标
1   1     2
2   2     2
3   2     1该点的坐标e.X=5,e.Y=5;对row[2]修改
dgv.Rows["X"] = e.X;
dgv.Rows["Y"] = e.Y;在DataGridView中看起来,值是改变了
点 X坐标 Y坐标
1   1     2
2   2     2
3   5     5但是对数据库进行更新时,并没有成功
我点点别的地方,比如某个Cell,便可以更新成功
这说明DataTable没有更改成功为什么会这样?
该怎么解决呢?

解决方案 »

  1.   


       //更改DataGridView同时更改数据源DataTable.
        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
          dt.Rows[e.RowIndex][e.ColumnIndex] = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
        }
      

  2.   

    更改DataGridView同时更改数据源DataTable.
    因为你只更新了DataGridView里面的值,没有更新DataTable里面的值,更新DataTable里面的值后还要更新数据库。
      

  3.   


    我想知道怎么让dataTable知道改变了
      

  4.   

    如果是手动操作,那么多DGV的操作同时也加到了DataTable中
    但是用程序添加的没有
    我想是不是因为某个事件没有触发呢?
    我最好还是不要赋值,而是将某个事件触发比较好
    想知道是哪个事件哈
      

  5.   

    还不是同样的道理你程序里 给datagridview的某行某列添加修改了数据 同时也给数据源DataTable某行某列修改数据
      

  6.   

    string strcon = string.Format("server=.;user=sa;pwd=000;database=test");
                SqlConnection connection = new SqlConnection(strcon);
                SqlCommand cmd = new SqlCommand("insert into stress values(@leftpole,@rightpole,@time)", connection);
                //SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                
                cmd.Parameters.Add(new SqlParameter("@x", SqlDbType.Float, 8, "x"));
                cmd.Parameters.Add(new SqlParameter("@y", SqlDbType.VarChar, 50, "y"));
                cmd.Parameters[0].Value = 更改后的值;
                    cmd.Parameters[1].Value = 更改后的值;
                    
                    connection.Open();
                    cmd.ExecuteNonQuery();
                    connection.Close();
    把上面的插入语句改成updata语句
      

  7.   


            private void pictureBoxEditPic_MouseMove(object sender, MouseEventArgs e)
            {
                float width = this.pictureBoxEditPic.Width;
                float height = this.pictureBoxEditPic.Height;            if (_editMove == true)
                {
                    this.dataGridViewLinkProp.Rows[_moveObject].Cells["Anchor_x"].Value = Math.Round(e.X / width, 2);
                    this.dataGridViewLinkProp.Rows[_moveObject].Cells["Anchor_y"].Value = Math.Round(e.Y / height, 2);
                }            this.pictureBoxEditPic.Refresh();
            }这样对DGV里的数据进行了修改
    然后Update()        private void buttonConnUpdate_Click(object sender, EventArgs e)
            {
                this._deviceBases.UpdateConnProp();
            }dataGridViewLinkProp的DataSource是DeviceBases里的DataSet里的一个DataTable
    更新就是将对应的DataTable更新