日期:2014-05-19  浏览次数:21527 次

WinForm下DataGridView编辑状态下删除最后一行问题
DataGridView   非绑定DataTable   ,dgv的Cell值是手工输入的,在输入过程(编辑状态)想删除最后一行,我是这的dGV_GList.Rows.RemoveAt(dGV_GList.Rows.Count-1);
这时出错提示:无法删除未提交的新行   ,请高手们帮解决.
问题解决的第一个代码给80分,剩余分顶者平分
谢谢了

------解决方案--------------------
不懂,帮顶
------解决方案--------------------
你跟踪一下,看看它的值对不对
------解决方案--------------------
没做过lz那样的东东,不过我觉得错误提示也挺明显啦,lz插入的行还没有提交吧,只是纯粹的缓存(按lz意思连datatable也没写入),应该不能直接删除了
------解决方案--------------------
期待高手来解决
帮顶
------解决方案--------------------
结束DataGridView的编辑状态再删
DataGridView.endedit();
------解决方案--------------------
你通过设置DataGridView.AllowUserToAddRows=False可以去掉最后一行,
最后一行实际上是一个未添加到行集中的新的临时行,你不能手动的来删除它.
------解决方案--------------------
同意楼上。把AllowUserToAddRows属性置为false即可。
------解决方案--------------------
同意,
---------------------
回复人:hbxtlhx(平民百姓)
你通过设置DataGridView.AllowUserToAddRows=False可以去掉最后一行,
最后一行实际上是一个未添加到行集中的新的临时行,你不能手动的来删除它.
----------------------------
以前碰到过这样的问题`````````
------解决方案--------------------
我以前用VB.net时删除Datagrid的最后一条记录时是这样写的:
Private Sub dgidinfo_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgidinfo.ItemCreated
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.EditItem) Then
Dim mycell As TableCell

mycell = e.Item.Cells(e.Item.Cells.Count - 1)
Dim btndel As LinkButton = CType(mycell.Controls(0), LinkButton)
btndel.Attributes.Add( "onclick ", "return confirm( '您真的要删除此项记录吗? ') ")
End If
End Sub
------解决方案--------------------
现让GridView 选中 其他行
在删除
dGV_GList.select();//选中 第一行
dGV_GList.Rows.RemoveAt(dGV_GList.Rows.Count-1);
------解决方案--------------------
同意!
一种办法是设置AllowUserToAddRows属性
还有觉得不必每编辑一个Cell就保存吧,最后确定要更新表的时候,如不想要最后一行,则清空就可以了