一个Winform程序,我的DataGridView绑定到了一个DataTable。1.当我前台用左键或者键盘上下键选择了一行时,后台更改了DataTable,这时选中行还是刚才那一行。DataGridView是怎么做到的?2.我在DataGridView的MouseClick事件中判断如果是右键,则设置鼠标位置所在行的Selected为true 然后弹出右键菜单,但是此时后台更改了DataTable,选中行就不再是刚才选中的那行了。是怎么回事?

解决方案 »

  1.   

    也就是说,DataGridView绑定到DataTable时 如果是用户用鼠标或者键盘选择行,我在后台更改DataTable时选中行是不会变的。
    可是,我通过设特定的DataGridRow的Selected为true的时候,后台更改DataTable的时候,选中行就会改变。
    这是怎么回事?
      

  2.   

       //主表上下移动时
            private void dgMain_KeyDown(object sender, KeyEventArgs e)
           {
                //rowIndex = 0;  取行号  
                if (e.KeyCode == Keys.Up)
                { 
                    rowIndex = dgMain.CurrentRow.Index + 1;   //向上加1
                }
                if (e.KeyCode == Keys.Down)
                {
                    rowIndex = dgMain.CurrentRow.Index - 1;   //向上加1
                }
                //更新DataTable....
            }------------------行选中状态发生更改.需要你控制你要得到的行进行操作....仅供参考!
      

  3.   


    我的问题是用户手动更改选中行时,后台更新DataTable内容时,前台的选中的行不会变。但是当我自己通过代码设置某个row为selected,后台再更新时,选中行就丢失了。是怎么回事?
      

  4.   

    你把datagridview的selectionMode设置成FullRowSelect就可以了
      

  5.   

    ......
    Public mybm As BindingManagerBase
    ......
    ......
                Dim oleAdp As New OleDbDataAdapter(comm)
                Dim ds, ds1 As New DataSet
                oleAdp.Fill(ds)
                dgvData.DataSource = ds.Tables(0)
                mybm = BindingContext(dgvData.DataSource)
    ......
    ......
      

  6.   

          mybm.Position = 123