在winform中绑定datagrid,点击修改弹出一个窗口,修改完数据后不能及时刷新到datagrid中,重新绑定也不能显示,Refresh也没用

解决方案 »

  1.   

    我用的是command对象,然后Command.ExecuteNonQuery();数据没更新,重新FILL也不更新,重新连接数据库才会显示更新?这是为什么呢?
      

  2.   

    你绑定的是什么数据?修改过后要用数据的确认修改在DataGrid中才能显示出来。如是dataset则是dataset.acc后面的记不住了。这样确认修改后就行了。
      

  3.   

    可以QQ联系一下。7735820,验证:csdn
      

  4.   

    shaun1981(打破砂锅问到底)  你的问题解决了吗?我也要这个问题的答案
      

  5.   

    winform里,datagrid中的焦点只有换行以后才会更新到datatable里面,而当前cell只有失去焦点以后才能取到cell里面的值
      

  6.   

    把修改的数据update到DataSet里面,然后重新绑定。
    TO  shaun1981(打破砂锅问到底):
    把你的command string放到QA里面看看有没有执行
      

  7.   

    你修改dataset后要用(假设dataset名为ds1)ds1.AcceptChanges();
     你用程序做了任何修改dataset数据不用ds1.AcceptChanges();是看不到效果的。 
      

  8.   

    点击修改弹出一个窗口,修改完数据后不能及时刷新到datagrid中
    你在弹出窗口时要把dataset传进去。修改完后再ds1.AcceptChanges();
      

  9.   

    lyymax() 在winform里面dataset有update方法吗?我怎么找不到
      

  10.   

    DataSet都有AcceptChange()方法,调用此方法就能显示到DataGrid中了
      

  11.   

    DataRow newRow = this.dataset1.Tables["studentInfo"].NewRow();
    newRow["StudentID"] = insertDialog.numberText.Text;
    newRow["FirstName"] = insertDialog.firstText.Text;
    newRow["LastName"] = insertDialog.lastText.Text;
    this.dataset1.Tables["studentInfo"].Rows.Add(newRow);
    MessageBox.Show("插入数据成功!");这个是我直接对TABLE操作,可以马上显示更新,但是如果用COMMAND对象插入数据不能马上更新DATAGRID,谁知道用什么方法可以执行COMMAN命令后马上更新DATAGRID呢?
      

  12.   

    AcceptChange()这个方法也有调用过就是不刷新
      

  13.   

    可以了,只要在FILL的第2个参数指定另一个新的表的名字(和DATAGRID正在显示的表名不能一样),然后在FILL方法后再把DATAGRID和这个新的表绑定,执行SQL的查询和插入等语句命令后就可以马上更新了。
      

  14.   

    string insertCmd = "INSERT into studentInfo(StudentID,FirstName,LastName) values(@studentID,@firstName,@lastName)";
     OleDbCommand insertCommand = new OleDbCommand(insertCmd,m_dbConnection);

     //使用Command对象的Parameters集合填充命令的值
     insertCommand.Parameters.Add("@studentID",OleDbType.VarChar,6);
     insertCommand.Parameters["@studentID"].Value=insertDialog.numberText.Text;

     insertCommand.Parameters.Add("@firstName",OleDbType.VarChar,6);
     insertCommand.Parameters["@firstName"].Value=insertDialog.firstText.Text;  insertCommand.Parameters.Add("@lastName",OleDbType.VarChar,6);
     insertCommand.Parameters["@lastName"].Value=insertDialog.lastText.Text;
                        
     insertCommand.ExecuteNonQuery();
     DataSet ds = new DataSet();
     ds.AcceptChanges();
     m_dbDataAdapter.Fill(ds,"insert");
     m_dgTPDDetail.SetDataBinding(ds,"insert");