以编程方式使新行变脏并在DataGridView中插入新行
我有一个可编辑的无界数据网格视图。 我正在以编程方式更改新行的值。
通常,当用户键入新行的任何字段时,它会变脏并在其下方插入另一个新行。
但在我的情况下,当用户进入新行的任何字段时,我正在捕获function键并以编程方式更改单元格值。
myGrid.CurrentCell.Value =“xyz”;
并且它不会在它下面插入新行。
现在作为一个解决方法我在CellValueChanged事件处理程序上尝试了这个。
if (myGrid.NewRowIndex == e.RowIndex) { myGrid.Rows.Insert(e.RowIndex + 1, 1); }
但它会抛出错误,说明No row can be inserted after the uncommitted new row.
。
我怎么能告诉myGrid我的当前行(这是一个新行)是脏的,之后需要一个新行?
我正在使用winforms DataGridView。 在我的情况下,我尝试了@iSid解决方案,但这里有一个帮助,我试过这个
myGrid.NotifyCurrentCellDirty(true); myGrid.NotifyCurrentCellDirty(false);
通过仅使当前单元变脏而不工作,您还必须提交该单元。 在下一个命令中,我标记当前单元格不脏,这将强制datagridview添加脏行。 它正在我的项目中工作。
在这里我得到了解决方案
myGrid.NotifyCurrentCellDirty(true);
我想(我不确定),你试图在New Row 之后插入一行……这是不可能的。 将代码更改为此
myGrid.Rows.Insert(e.RowIndex - 1, 1);
应该在New Row 之前插入行,这应该可行。
考虑到问题的时间范围,这真的很晚,但接受的答案对我不起作用。 最后为我解决的是首先在脏行上方插入一行,然后编辑“干净”行。
if (e.RowIndex == myGrid.Rows.Count - 1) { myGrid.Rows.Add(); } myGrid[e.ColumnIndex, e.RowIndex].Value = etd.ResultText; // Edit at your leisure.