Datagridview在行更改时导入旧行数据

时间:2013-12-31 19:35:02

标签: c# checkbox datagridview

我有两个DataGridViews,A和B,以及一个DataSet“D”,两个表“tA”和“tB”在结构上相同。每个DataGridView都通过自己的BindingSource连接到各自的表。

其中一个名为“Complete”的列包含用于将数据行标记为“Complete”的复选框。当用户检查DataGridView A中的这样一个复选框时,我想立即将该数据行从dgv A移动到dgv B.我已经使用下面的事件处理代码完成了这个

    void datagridviewA_CurrentCellDirtyStateChanged(object sender, EventArgs e)
    {
        if (datagridviewA.IsCurrentCellDirty)
        {
            datagridviewA.CommitEdit(DataGridViewDataErrorContexts.Commit);
        }
    }

    void datagridviewA_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {            
        if (e.ColumnIndex == 11) // 11 is the column index containing the "complete" checkboxes
        {
            tB.ImportRow(tA.Rows[e.RowIndex]);
            tA.Rows.RemoveAt(e.RowIndex);
        }
    }

这可以将行从dgv A移动到dgv B,但我希望在dgv B中检查“完整”复选框单元格,但事实并非如此。就好像在更新tA之前从tA导入行以反映复选框的“已检查”状态。

如何移动行并按预期选中复选框?

谢谢,

2 个答案:

答案 0 :(得分:0)

尝试将单元格转换为DataGridViewCheckBoxCell并将已检查属性设置为true。

答案 1 :(得分:0)

我不得不打电话给“tA.Rows [e.RowIndex] .AcceptChanges();”在导入行之前!