(winform)如何取消DataGrid的编辑模式?
我的程序是这样的:用DataGrid显示数据,在DataGrid修改数据后单击ToolBar的按钮【保存】按钮,就可以保存修改的数据。
我遇到的问题是:当我在DataGrid的单元格修改数据后(此时DataGrid处于编辑模式)直接单击ToolBar的按钮【保存】按钮,但无法保存修改的数据。但是我在form中添加一个button,当我在DataGrid的单元格修改数据后(此时DataGrid处于编辑模式)直接单击button,确可以保存修改的数据。
我发现这个问题的主要原因是:当DataGrid处于编辑模式我单击ToolBar的按钮后
DataGrid并不结束编辑模式,所以无法保存修改数据,但是单击from上的button后DataGrid结束编辑模式,所以可以保存修改数据。
我想问如何在ToolBar的按钮响应事件中结束DataGrid的编辑模式?
问题点数:100、回复次数:17Top
1 楼kandyivy()回复于 2003-12-03 11:55:02 得分 0
不知道在说什么Top
2 楼meixiaofeng(yesmsn)回复于 2003-12-03 11:57:25 得分 35
this.dataGrid1.EndInit();
//this.mybind.EndCurrentEdit();
this.BindingContext[this.custDS1,"Table_VIPInfo"].EndCurrentEdit();
this.custDA.Update(this.custDS1,"Table_VIPInfo");Top
3 楼myhex(小乙)回复于 2003-12-03 12:02:22 得分 20
你说的ToolBar是你自己设计的用户界面里的ToolBar吗?
应该不存在你这种现象吧。可能是你对两个Button的响应代码不同。
你如果只是简单在单元格里修改了数据,这种修改不会被返回到数据源的,如果想同步数据源,可以用DataAdapter的update方法。这样可以更新数据源。
另外DataGrid不存在编辑模式一说,但你可以Enable=false或ReadOnly=true使之不能工作。
Top
4 楼caosheng(草圣)回复于 2003-12-03 12:17:58 得分 0
myhex(小乙):我说的就是我自己设计的用户界面里的ToolBar,两个Button的响应代码绝对相同。编辑模式只是我自己的说法,但是却有不同。
(1)当单击到某格单元格时DataGrid最左一列有一个三角表示当前选中的行。
(2)当单击到某格单元格对其中内容修改时DataGrid最左一列有一个笔的图标表示当前选中的行。
我说的编辑模式就时第(2)种情况。Top
5 楼gujianxin(木头象)回复于 2003-12-03 13:00:24 得分 0
YourDataGride.EditItemIndex = -1;Top
6 楼caosheng(草圣)回复于 2003-12-03 13:33:54 得分 0
gujianxin(木头象):我说的不是Web的DataGridTop
7 楼gujianxin(木头象)回复于 2003-12-03 16:18:18 得分 15
sorry , try it
EndEdit();Top
8 楼qtgy(晴天观雨)回复于 2003-12-03 16:22:32 得分 0
这个问题我也遇见过,后来我没用toolbarTop
9 楼marising(抹布)回复于 2003-12-03 16:38:09 得分 30
二楼的方法是可行的,在保存前建议加上这么一句。
this.BindingContext[ds.Tables[0]].EndCurrentEdit();
如果修改了DataGrid的某一个单元格的数据,
当焦点移开之后,这个单元格的数据将存入绑定的DataSet,
如果没有移开焦点而保存,DataGrid的数据就更新到DataSet中,
所以,必须使用EndCurrentEdit()方法手动结束当前编辑,
保持DataGrid和DataSet数据一致。
Top
10 楼marising(抹布)回复于 2003-12-03 16:39:14 得分 0
应该时:DataGrid的数据就没有更新到DataSet中Top
11 楼caosheng(草圣)回复于 2003-12-03 17:42:53 得分 0
我用this.BindingContext[ds.Tables[0]].EndCurrentEdit()不行啊,代码如下:
If e.Button Is Me.tbbSave Then
Me.BindingContext(Me.DataSet11.Tables("商品清单")).EndCurrentEdit()
Try
'判断DataSet11的数据是否有变化
'即DataGrid控件上是否有数据更改或新增数据
If Me.DataSet11.HasChanges Then
'通过SqlDataAdapter1更新数据库数据
Me.SqlDataAdapter1.Update(Me.DataSet11)
Me.DataSet11.Tables("商品清单").DefaultView.RowFilter = ""
MessageBox.Show("数据修改成功!")
Else
MessageBox.Show("无修改的数据!")
End If
Catch ex As Exception
MessageBox.Show("修改的数据出错")
End Try
End If
Top
12 楼caosheng(草圣)回复于 2003-12-03 17:45:42 得分 0
我用了this.BindingContext[ds.Tables[0]].EndCurrentEdit()不行啊代码如下:
If e.Button Is Me.tbbSave Then
Me.BindingContext(Me.DataSet11.Tables("商品清单")).EndCurrentEdit()
Try
'判断DataSet11的数据是否有变化
'即DataGrid控件上是否有数据更改或新增数据
If Me.DataSet11.HasChanges Then
'通过SqlDataAdapter1更新数据库数据
Me.SqlDataAdapter1.Update(Me.DataSet11)
Me.DataSet11.Tables("商品清单").DefaultView.RowFilter = ""
MessageBox.Show("数据修改成功!")
Else
MessageBox.Show("无修改的数据!")
End If
Catch ex As Exception
MessageBox.Show("修改的数据出错")
End Try
End If
Top
13 楼caosheng(草圣)回复于 2003-12-03 17:45:58 得分 0
我用了this.BindingContext[ds.Tables[0]].EndCurrentEdit()不行啊代码如下:
If e.Button Is Me.tbbSave Then
Me.BindingContext(Me.DataSet11.Tables("商品清单")).EndCurrentEdit()
Try
'判断DataSet11的数据是否有变化
'即DataGrid控件上是否有数据更改或新增数据
If Me.DataSet11.HasChanges Then
'通过SqlDataAdapter1更新数据库数据
Me.SqlDataAdapter1.Update(Me.DataSet11)
Me.DataSet11.Tables("商品清单").DefaultView.RowFilter = ""
MessageBox.Show("数据修改成功!")
Else
MessageBox.Show("无修改的数据!")
End If
Catch ex As Exception
MessageBox.Show("修改的数据出错")
End Try
End If
Top
14 楼rock1981(呵呵呵)回复于 2003-12-03 17:48:03 得分 0
upTop
15 楼zjlion(晴海)回复于 2003-12-03 18:16:17 得分 0
这个问题我也遇见过,谢谢各位。
Top
16 楼caosheng(草圣)回复于 2003-12-04 18:07:03 得分 0
自己终于解决了,不过方法不是很好。
If e.Button Is Me.tbbSave Then
Dim row, col As Integer
row = Me.dgdGoodInfo.CurrentCell.RowNumber
row = row + 1
Me.dgdGoodInfo.CurrentCell = New DataGridCell(row, 0)
Try
'判断DataSet11的数据是否有变化
'即DataGrid控件上是否有数据更改或新增数据
If Me.DataSet11.HasChanges Then
'通过SqlDataAdapter1更新数据库数据
Me.SqlDataAdapter1.Update(Me.DataSet11)
Me.DataSet11.Tables("商品清单").DefaultView.RowFilter = ""
MessageBox.Show("数据修改成功!")
Else
MessageBox.Show("无修改的数据!")
End If
Catch ex As Exception
MessageBox.Show("修改的数据出错")
End Try
End IfTop
17 楼caosheng(草圣)回复于 2003-12-04 19:07:05 得分 0
自己终于解决了,不过方法不是很好。
If e.Button Is Me.tbbSave Then
Dim row, col As Integer
row = Me.dgdGoodInfo.CurrentCell.RowNumber
row = row + 1
Me.dgdGoodInfo.CurrentCell = New DataGridCell(row, 0)
Try
'判断DataSet11的数据是否有变化
'即DataGrid控件上是否有数据更改或新增数据
If Me.DataSet11.HasChanges Then
'通过SqlDataAdapter1更新数据库数据
Me.SqlDataAdapter1.Update(Me.DataSet11)
Me.DataSet11.Tables("商品清单").DefaultView.RowFilter = ""
MessageBox.Show("数据修改成功!")
Else
MessageBox.Show("无修改的数据!")
End If
Catch ex As Exception
MessageBox.Show("修改的数据出错")
End Try
End IfTop




