本帖最后由 yifawu100 于 2012-04-03 17:23:20 编辑

解决方案 »

  1.   

    DataGird.UpdateCellValue(列IDX,行IDX),这两个IDX你可以通过其他途径得到,或事先保存在一个ColumnChanged 事件处理程序可以访问到的地方.
      

  2.   

    这得看你代码怎么写的了,看看修改后是否及时触发了ColumnChanged 事件,改变另一个列是如何改的
      

  3.   


    这个不需要担心,楼主在原文中已经说了"DataTable 的 ColumnChanged 事件中用代码更改了某一列的内容",说明DataTable的值已经是新值了.
      

  4.   

    如果不确定已触发的话, 可以在合适的事件中调用this.BindingContext[DataTable].EndCurrentEdit();
      

  5.   


    按照1楼的方法改了下,还是没用
    数据肯定是更改了,移动光标就更新了
    表中有两个bool值,要求一个为真,另一个自动为真。protected  void OnColumnChanged(object sender, DataColumnChangeEventArgs args)
            {
                if (args.Column.ColumnName == "display" )
                {
                    string s = args.Row["display"].ToString();                if ((bool)(args.Row["display"]) == true)
                    {
                        args.Row.BeginEdit();
                        args.Row["contain"] = true;
                        args.Row["width"] = 90;
                        args.Row.EndEdit();
                        DataGridViewCell cell = customDataGridView1.CurrentCell;
                      //  customDataGridView1.CurrentCell.Value = false;
                        customDataGridView1.UpdateCellValue(4, 1);
                        customDataGridView1.UpdateCellValue(4, 2);
                        customDataGridView1.UpdateCellValue(4, 3);
                        customDataGridView1.UpdateCellValue(4, 0);
                        customDataGridView1.Refresh();
                       // .CurrentCell                }
                    
                               }
            }
      

  6.   

    DataGridView单元格的值是结束编辑后才会更新到数据源的,也就是当前单元格失去焦点时,所以会出现你说的这种情况,如果你正在编译单元格时,点击的是ToolBar或Menu之类的东西时,单元格不会失去焦点,这时可以在处理ToolBar或Menu中调用this.BindingContext[DataTable].EndCurrentEdit();如果你的单元格在失去焦点后,被动单元格的内容依然不出现变化时需要调用UpdateCellValue
      

  7.   

      private void m_GridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 2)
                {
                    this.m_GridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }加上这个就OK了,这是看别人的,MSDN上有例子