Foxtable(狐表)用户栏目专家坐堂 → 撤销后,记录窗口中修改的内容未被还原


  共有9618人关注过本帖树形打印复制链接

主题:撤销后,记录窗口中修改的内容未被还原

帅哥哟,离线,有人找我吗?
jinruan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:198 积分:1448 威望:0 精华:0 注册:2011/8/23 17:38:00
撤销后,记录窗口中修改的内容未被还原  发帖心情 Post By:2012/12/15 20:59:00 [只看该作者]

取消(撤销)事件:
If (DataTables("销售订单").HasChanges = True) Or (DataTables("销售明细").HasChanges = True) Then
    Dim Result As DialogResult
    Result = MessageBox.Show("是否取消修改", "e.Form.name", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        DataTables("销售订单").RejectChanges()
        DataTables("销售明细").RejectChanges()
    End If
End If


图片点击可在新窗口打开查看此主题相关图片如下:6688.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2012-12-15 20:59:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/15 21:50:00 [只看该作者]

 去订单明细那里看看是否确实没有还原。再看看是这一行是修改状态还是已经保存的状态。

 如果是保持状态,可能是哪里写有保存的代码了。

 回到顶部
帅哥哟,离线,有人找我吗?
jinruan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:198 积分:1448 威望:0 精华:0 注册:2011/8/23 17:38:00
  发帖心情 Post By:2012/12/16 11:46:00 [只看该作者]

销售订单
销售明细
在外部表中都在撤销后还原为原值了,只是对应  销售订单 的这个记录窗口没有更新显示内容

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/12/17 8:17:00 [只看该作者]

这应该是设计上的不足,以后给ReocrdGrid加一个Refresh方法,用于强制刷新数据。

另外你这种情况,自己设计窗口就行了,何必用多一个RecordGrid凑在一起呢?


 回到顶部
帅哥哟,离线,有人找我吗?
jinruan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:198 积分:1448 威望:0 精华:0 注册:2011/8/23 17:38:00
  发帖心情 Post By:2012/12/17 9:24:00 [只看该作者]

插入多个RecordGrid控件,全部绑定到一个表,给不同的RecordGrid控件设置不同的显示列,
这样比自己加控件绑定方便多了,以后要增加内容也不用再重排列控件,只调整下RecordGrid的列就行,工作量少很多啦
按您的思路,因为DataTables("销售订单")在始终是加载一条记录, 所以加了:DataTables("销售订单").Load 重新刷新下数据后可以了
If (DataTables("销售订单").HasChanges = True) Or (DataTables("销售明细").HasChanges = True) Then
    Dim Result As DialogResult
    Result = MessageBox.Show("是否取消修改", "e.Form.name", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        DataTables("销售订单").RejectChanges()
        DataTables("销售明细").RejectChanges()
        DataTables("销售订单").Load
    End If
End If

[此贴子已经被作者于2012-12-17 9:24:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/17 9:37:00 [只看该作者]

 应该使用记录窗口的 Refresh方法。

 重新Load表的话,代价太大。

 回到顶部
帅哥哟,离线,有人找我吗?
jinruan
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:198 积分:1448 威望:0 精华:0 注册:2011/8/23 17:38:00
  发帖心情 Post By:2012/12/17 10:09:00 [只看该作者]

在帮助中找到:记录窗口的 Build 方法,也可以正常显示,此方法可行吗
If (DataTables("销售订单").HasChanges = True) Or (DataTables("销售明细").HasChanges = True) Then
    Dim Result As DialogResult
    Result = MessageBox.Show("是否取消修改", "e.Form.name", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        DataTables("销售订单").RejectChanges()
        DataTables("销售明细").RejectChanges()
        'DataTables("销售订单").Load        
        Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid3")
        'rgd.Table = Tables("员工")
        'rgd.Columns = "编号|姓名|部门|职务|性别|尊称|出生日期|地址|家庭电话|办公电话"
        rgd.Build()          
    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/17 10:21:00 [只看该作者]

 可行。

 回到顶部
帅哥哟,离线,有人找我吗?
jinruan
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:198 积分:1448 威望:0 精华:0 注册:2011/8/23 17:38:00
  发帖心情 Post By:2012/12/17 10:37:00 [只看该作者]

使用遍历,全部重建了记录窗口,测试通过

If (DataTables("销售订单").HasChanges = True) Or (DataTables("销售明细").HasChanges = True) Then

    Dim Result As DialogResult

    Result = MessageBox.Show("是否取消修改", "e.Form.name", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

    If Result = DialogResult.Yes Then

        DataTables("销售订单").RejectChanges()

        DataTables("销售明细").RejectChanges()

        'DataTables("销售订单").Load  '重载数据

        ''  Dim rgd As WinForm.RecordGrid = e.Form.Controls("RecordGrid3") '逐个记录窗口重建立

        ''  rgd.Build

        For Each c As WinForm.Control In e.Form.Controls '遍历重建所有记录窗口

            If Typeof c Is WinForm.RecordGrid Then '判断控件是否是记录窗口

                Dim rgd As WinForm.RecordGrid = c '使用特定类型的变量引用控件

                rgd.Build()

            End If

        Next

    End If

End If


 回到顶部