以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教:编辑行之后自动保存  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49372)

--  作者:ibehujun
--  发布时间:2014/4/16 23:31:00
--  请教:编辑行之后自动保存

请教各位高手,

为提升用户体验,设计以下编辑控制点,不知最后一点如何实现。非常感谢

 

1. 新增或编辑行之后,自动保存

2. 自动保存时校验某列非空

3. 如果没有保存成功,不允许切换其他表。


--  作者:Bin
--  发布时间:2014/4/17 8:52:00
--  

MainTableChanging事件


If DataTables(e.OldTableName).HasChanges Then
    MessageBox.show("有没保存内容")
    e.Cancel=True
End If

--  作者:ibehujun
--  发布时间:2014/4/17 21:35:00
--  

e.cancel 没有想到。就是要这个效果。

非常感谢。


--  作者:ibehujun
--  发布时间:2014/4/17 21:42:00
--  

非常感谢,要的是这个效果。

 

新问题来了,

如果修改关联表,切换主表,还是可以切换,请问如何处理啊


--  作者:有点甜
--  发布时间:2014/4/17 21:49:00
--  

 改一下代码,检查整个项目的表是否有修改

 

For Each dt As DataTable In DataTables 

    If dt.HasChanges Then
        MessageBox.show("有没保存内容")
        e.Cancel=True
        exit for
    End If

Next

[此贴子已经被作者于2014-4-17 21:49:50编辑过]

--  作者:ibehujun
--  发布时间:2014/4/17 22:53:00
--  

非常感谢Bin兄和甜兄,已经解决了,自己也进一步优化了用户体验。分享如下:

 

编辑表之后如离开,提示是否保存。点击“是”,则立即保存。

 

Dim Result As DialogResult
For Each dt As DataTable In DataTables  \'检查所有的表,包括关联表修改,也禁止切换
    If dt.HasChanges Then
        Result = MessageBox.Show("是否保存?","提示", MessageBoxButtons.YesNo)
        If Result = DialogResult.Yes Then
            Syscmd.Project.Save()
        Else
            e.Cancel=True
        End If
        Exit For \'找到修改的表,便停止查找
    End If
Next