CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

(winform)如何取消DataGrid的编辑模式?

楼主caosheng(草圣)2003-12-03 11:51:52 在 .NET技术 / C# 提问

我的程序是这样的:用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

相关问题

  • (WinForm)DataGrid取消编辑的问题
  • dataGrid在winForm中,如何取消其行选删除机能?
  • Winform中DataGrid中如何取消刪除行的操作??
  • datagrid取消更新问题
  • datagrid如何取消选择?
  • winform datagrid
  • datagrid的更新,取消问题
  • 用了setXorMode(背景色)之后,如何取消xor模式,就是恢复常规模式
  • 怎么样进入单用户模式与取消单用户模式,服务器有人访问的时候?
  • 怎么样进入单用户模式与取消单用户模式,服务器有人访问的时候?

关键词

  • 数据
  • 修改
  • datagrid
  • 模式
  • me
  • toolbar
  • 控件
  • 代码
  • endcurrentedit
  • 单元格

得分解答快速导航

  • 帖主:caosheng
  • meixiaofeng
  • myhex
  • gujianxin
  • marising

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo