我有DataGridView
,其中显示了交叉引用部件号列表,每个部件号都有公司名称和交叉引用号。当用户完成对单元格的编辑时,它会自动发送更新。但是,我显然不希望存储在表中的空交叉引用,因此如果用户从公司和数字字段中删除信息,我只是删除该记录。它在SQL业务端完全正常,但我已从dgv中删除该行。每当您尝试在结束编辑中删除一行时,它就会消失
操作无效,因为它 导致重新调用 SetCurrentCellAddressCore函数。
我通过谷歌搜索看到了一些资源,但却没有解决这个问题。我似乎无法找到解决这个问题的方法。我已经尝试了dgv.Rows.Remove()
并尝试运行我的FillDGV()
方法,该方法在开始时清除了dgv,但似乎在删除触发的单元格的父行时遇到了一些重大问题EndEdit
事件。我已经尝试过其他人建议的一些东西,比如在移除和更改当前单元格之前给出另一个控制焦点,但是都不起作用。任何人都可以建议解决这个问题吗?
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
。它在行删除时死亡。