日期:2014-05-18  浏览次数:20986 次

怪事:DataTable 与DataGridView 同步问题
DataTable 与DataGridView 绑定了,
在 DataTable 的 ColumnChanged 事件中用代码更改了某一列的内容,表示一列有改动另一列也跟着改动,
可是DataGridView显示的另一列并不马上改过来,当光标移到下一列或其它位置才显示改动后的值。
有什么办法可以立即显示呢? 不用移动光标位置。

 

------解决方案--------------------
不知道你用的是CheckBox,CheckBox有点特殊,刚查了下MSDN,以下代码差不多和你的意思一样
C# code
 public partial class Form1 : Form
    {
       
        public Form1()
        {
           
            InitializeComponent();
            this.m_DataSet.Table.ColumnChanged += new DataColumnChangeEventHandler(Table_ColumnChanged);
           
        }

        void Table_ColumnChanged(object sender, DataColumnChangeEventArgs e)
        {
            if (e.Column.ColumnName  == "A")
            {
                if ((bool)e.Row["A"] == true)
                {
                    e.Row["B"] = "T";
                }
                else
                {
                    e.Row["B"] = "F";
                }
            }
        }

      
        private void m_GridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                this.m_GridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }

       
        private void m_GridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0 && e.RowIndex !=-1)
            {
               
                this.m_GridView.UpdateCellValue(1, e.RowIndex);
            }
        }

        private void m_GridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0)
            {
                this.m_GridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
        }

        
    }