以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 撤销后,记录窗口中修改的内容未被还原 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=26854) |
-- 作者:jinruan -- 发布时间: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 [此贴子已经被作者于2012-12-15 20:59:55编辑过]
|
-- 作者:lin_hailun -- 发布时间:2012/12/15 21:50:00 -- 去订单明细那里看看是否确实没有还原。再看看是这一行是修改状态还是已经保存的状态。 如果是保持状态,可能是哪里写有保存的代码了。 |
-- 作者:jinruan -- 发布时间:2012/12/16 11:46:00 -- 销售订单 及 销售明细 在外部表中都在撤销后还原为原值了,只是对应 销售订单 的这个记录窗口没有更新显示内容
|
-- 作者:狐狸爸爸 -- 发布时间:2012/12/17 8:17:00 -- 这应该是设计上的不足,以后给ReocrdGrid加一个Refresh方法,用于强制刷新数据。 另外你这种情况,自己设计窗口就行了,何必用多一个RecordGrid凑在一起呢? |
-- 作者:jinruan -- 发布时间: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 -- 发布时间:2012/12/17 9:37:00 -- 应该使用记录窗口的 Refresh方法。 重新Load表的话,代价太大。 |
-- 作者:jinruan -- 发布时间: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 -- 发布时间:2012/12/17 10:21:00 -- 可行。 |
-- 作者:jinruan -- 发布时间: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 |