首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
wangchinaking (57)
yjz0065 (113)
coofucoo (105)
Drate (69)
lphpc (30)
smallnest (61)
iiprogram (64)
downmoon (32)
danny_xcz (49)
btbtd (81)
CSDN - 文档中心 - .NET 阅读:5890   评论: 2    参与评论
标题   datagrid保存时无法提交更新的问题     选择自 zwq78 的 Blog
关键字   焦点,toolbar
出处  

如果绑定了datagrid,在datagrid中对数据进行更改后,点击窗体中的toolbar按钮进行保存时,最后输入的那个数据,如果焦点没有移开,在保存的时候就得不到提交,只有移开焦点的时候才能提交!

在csdn的贴子上搜索了很久,发现很多人都是建议不用toolbar,而是用button控件,网友covis的解释是“用带SELECTED属性的控件提交数据即可。可能你用TOOLBAR的按钮或其它没有SELECTED属性的控件提交数据的。因为他不能被选中,所以他不能接受焦点,一般的按钮或控件可以将其它控件的焦点转移到自己身上。从这里去考虑。”原文在:http://search.csdn.net/expert/topic/52/5201/2003/4/21/1688615.htm

但是由于笔者所有的toolbar都已经做好了,再更改起来麻烦也不美观,能不能找到其它方法来实现呢?

经过一些摸索,发现了如下的方法可以实现:

    Public Sub SaveData()
        '检查当前焦点是否在datagrid上,是就切换单元格,并提交更改。
        If Me.ActiveControl.Parent.GetType Is GetType(DataGrid) Then
            Dim dg As DataGrid = CType(Me.ActiveControl.Parent, DataGrid)
            ChangeCurrentCell(dg)
            Me.BindingContext(dg.DataSource).EndCurrentEdit()
        End If

       .....save代码

    End Sub

    Public Function ChangeCurrentCell(ByVal dg As DataGrid) As Boolean
        Try
            Dim temp As DataGridCell = dg.CurrentCell

            dg.CurrentCell = New DataGridCell(temp.RowNumber, 0)
            dg.CurrentCell = temp
            Return True
        Catch ex As Exception
            Return False
        End Try

    End Function


相关文章
对该文的评论
CSDN 网友 ( 2004-06-21)
挺好的,其实只要一个离开焦点语句就可以了
yaoyuhang ( 2004-02-23)
dg.CurrentCell = New DataGridCell(temp.RowNumber, 0)
没有考虑如果dg.CurrentCell本来就等于 DataGridCell(temp.RowNumber,0)的情况.
不过方法还是挺好的.