抱歉,如果这是一个微不足道的问题,我几乎没有开始C#和编程一般。
默认行为似乎是跳到下一行和单元格0。我尝试了如下操作:
private void DBUpdate()
{
da = new MySqlDataAdapter("SELECT * FROM WPVersand WHERE erledigt =''", Globals.cn);
MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
cb.ConflictOption = ConflictOption.OverwriteChanges;
System.Data.DataTable changes = dt.GetChanges();
if (changes != null)
{
if (dt.Rows.Count > 0)
{
// Set the current cell to the updated cell
int row = dgvDaten.CurrentCell.RowIndex;
int column = dgvDaten.CurrentCell.ColumnIndex;
DialogResult res = MessageBox.Show("Änderung übernehmen?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (res == DialogResult.Yes)
{
da.Update(changes);
dt.AcceptChanges();
dgvDaten.CurrentCell = dgvDaten[column, row];
dgvDaten.Refresh();
}
else if (res == DialogResult.No)
{
bs = new BindingSource();
bs.DataSource = dt;
dgvDaten.AutoGenerateColumns = true;
dgvDaten.Columns.Clear();
dgvDaten.DataSource = bs;
}
}
}
}
private void dgvDaten_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
bs.EndEdit();
dgvDaten.EndEdit();
DBUpdate();
}
但这只会重新选择下一行的同一个单元格。
我错过了什么?
非常感谢!
1条答案
按热度按时间fcipmucu1#
实现该结果的一种方法是继承
DataGridView
,用新的DataGridViewEx
控件替换Designer文件中的控件,然后更改其默认行为,自定义它以执行您想要的操作,即在编辑后重新选择DGV中的同一单元格。这是我测试的第一个定制
DataGridViewEx
,看起来很成功。不管这是否是你所寻找的行为,这就是你可以做到的,这些方法与行/列/单元格/当前单元格选择有关。我用这个最小的代码来测试,因为这个问题 * 是 * 关于单元格选择的,而 * 不是 * 关于
DataTable
绑定的,所以我选择为DGV做一个非常简单的DataSource
来测试。