在datagridview中有一列为checkbox,其他列不是,这时我选中几个checkbox,然后点击了其他列的排序,这时我选中的checkbox会被刷新掉(也就是说我又得重新选择)!我如何才能避免?才不会出现这种情况?

解决方案 »

  1.   

    commitderty()
    可能打错了,
    你没有提交数据,
    你试试点点其他的空间,在点排序,就没问题了
      

  2.   

    点排序的时候可能有以下几种情况:
    1.你的checkbox还在编辑状态下,没有离开编辑状态
    2.就是点排序的时候重新绑定了一下DataGridview解决:
    1.取消编辑状态(百度一下)
    2.就是在点击事件那里写
    当你点击的时候,用循环判断你的那一列checkbox有哪几个的value是True,然后在重新绑定的时候在在把checkbox的value设置成true
      

  3.   

           private void mana_dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (mana_dgv.IsCurrentCellDirty)   //一般情况下是datagridview失去焦点,才提交数据,以下是发生更改就提交
                {
                    mana_dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }
      

  4.   

    楼主,这主要是你没有把datagridview修改后的临时值保存下来,你定义一个类全部变量:private DataTable tempTable=null;在“点击了其他列的排序”事件处理函数里,先把datagridview的DataSource取出:
            private void dataGridView1_ColumnSortModeChanged(object sender, DataGridViewColumnEventArgs e)
            {
                     tempTable=(DataTable )datagridview1.DataSource;
            }然后在控件重绘事件里,把这个临时变量重新赋值给datagridview1:
            private void dataGridView1_Paint(object sender, PaintEventArgs e)
            {
                     datagridview1.DataSource=tempTable;
            }