C# SetCurrentCellAddressCore DatagridView异常
我有一个DataGridView,它显示了交叉引用零件号的列表,每个零件号都有一个公司名称和一个交叉引用号。当用户完成编辑单元格时,它会自动发送更新。但是,我显然不希望表中存储空的交叉引用,因此如果用户同时从company和number字段中删除信息,我就删除该记录。在业务的SQL端,这一切都很好,但我正在从dgv中删除该行。无论何时尝试在结束编辑中删除行,它都会弹出 操作无效,因为该操作无效 导致对的可重入调用 SetCurrentCellAddressCore函数 我在谷歌上看到了一些关于这个问题的信息。我似乎想不出解决这个问题的办法。我尝试了dgv.Rows.Remove,并且尝试了只运行FillDGV方法,该方法在开始时清除了dgv,但似乎在删除触发EndEdit事件的单元格的父行时遇到了一些主要问题。我尝试过其他人建议的一些事情,比如在移除之前提供另一个控制焦点,并更改当前单元格,但都不起作用。有人能建议一个解决这个问题的方法吗C# SetCurrentCellAddressCore DatagridView异常,c#,winforms,exception,datagridview,C#,Winforms,Exception,Datagridview,我有一个DataGridView,它显示了交叉引用零件号的列表,每个零件号都有一个公司名称和一个交叉引用号。当用户完成编辑单元格时,它会自动发送更新。但是,我显然不希望表中存储空的交叉引用,因此如果用户同时从company和number字段中删除信息,我就删除该记录。在业务的SQL端,这一切都很好,但我正在从dgv中删除该行。无论何时尝试在结束编辑中删除行,它都会弹出 操作无效,因为该操作无效 导致对的可重入调用 SetCurrentCellAddressCore函数 我在谷歌上看到了一些关于这
private void viewCrossRef_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
string number = null;
string company = null;
if (viewCrossRef["CrossReference", e.RowIndex].Value != null)
number = viewCrossRef["CrossReference", e.RowIndex].Value.ToString();
if (viewCrossRef["Company", e.RowIndex].Value != null)
company = viewCrossRef["Company", e.RowIndex].Value.ToString();
basePart.CrossReferences[e.RowIndex].Company = company;
basePart.CrossReferences[e.RowIndex].CrossReferenceNumber = number;
if (String.IsNullOrEmpty(company) && String.IsNullOrEmpty(number))
viewCrossRef.Rows.RemoveAt(e.RowIndex);
basePart.UpdateCrossReferences();
}
DataTable在UpdateCrossReferences方法中更新。它在删除行时消失。是否也从填充DataGridView的DataTable中删除该行?发布一些代码..@Saad-添加了代码。我正在从数据表中删除该行。我很确定这与此无关。