以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请教PositionChanged的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89402)

--  作者:viking
--  发布时间:2016/8/21 1:48:00
--  [求助]请教PositionChanged的问题
有个想法,请老师给解答一下:
表属性中的PositionChanged
是不是可以利用这个变相的做一个数据同步的功能
当选择这一行时,本行的数据和数据库中数据进行比对,如果与数据库中的数据不一致,就更新这一行。
如果一致,就Return
这样用户就能在操作前看到最新的数据了。
这种做法是不是可行?
如果可行,怎么写这个代码?
谢谢,老师?

--  作者:大红袍
--  发布时间:2016/8/21 14:20:00
--  

 直接load这一行就好。

 

Dim r As Row = e.Table.Current
If r IsNot Nothing Then
    r.DataRow.Load
End If


--  作者:viking
--  发布时间:2016/8/21 15:42:00
--  

不需要比较数据库的数据吗?直接加载?

这种做法有那方面的缺点啊?

 


--  作者:大红袍
--  发布时间:2016/8/21 16:07:00
--  
以下是引用viking在2016/8/21 15:42:00的发言:

不需要比较数据库的数据吗?直接加载?

这种做法有那方面的缺点啊?

 

 

如果要比较也行,参考

 

Dim r As Row = e.Table.Current
If r IsNot Nothing Then
    For Each c As Col In e.Table.cols
        If c.DataCol.Expression = "" Then
            If r.DataRow.OriginalValue(c.name) <> r(c.name) Then
                Dim Result As DialogResult
                Result = MessageBox.Show("当前行有修改,是否重新加载?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
                If Result = DialogResult.Yes Then
                    r.DataRow.Load
                End If
                Exit For
            End If
        End If
    Next
End If


--  作者:viking
--  发布时间:2016/8/23 0:12:00
--  
有什么缺点吗?


--  作者:Hyphen
--  发布时间:2016/8/23 8:47:00
--  
参考:http://www.foxtable.com/webhelp/scr/3006.htm