以文本方式查看主题

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

--  作者:chnfo
--  发布时间:2012/12/20 21:01:00
--  [求助]TabControl 的疑问
1.局域网使用
2.TabControl的各个分页夹都有table,并且分别绑定表,表是normal。

问题:
我在TabControl的A分页夹的tableA里输入了数据,然后希望在B分页夹里引用A分页夹中tableA.datatable里的“新添加”数据,但发现引用不了新添加数据;然后退出窗口,点一下“保存”按钮,再打开窗口,又可以引用A分页夹中tableA.datatable里的新添加数据

同样的,直接退出窗口,再到其它表中准备引用A分页夹中tableA.datatable里的新添加数据,也不行,但退出窗口后点一下保存又可以。

原因分析:
我觉得可能是分页夹切换的时候,数据并没有得到保存(但应当不会,输入的数据是实时保存的)
又或者是局域网应用,数据没有及时得到同步?

如果数据要同步,又该如何操作呢?——————总不能动不动就去日常工作里点同步行啊

我也在论坛上检索了“数据同步”的相关帖,也试了一些方法,还是不中。
[此贴子已经被作者于2012-12-20 21:21:48编辑过]

--  作者:布莱克朱
--  发布时间:2012/12/20 21:22:00
--  
切换时加载一下
--  作者:chnfo
--  发布时间:2012/12/20 21:27:00
--  
————我想到的最简单的办法是:切换分页夹的时候,直接把本分页夹里的表的.datatable.save.

但看了TabControl的方法,只有两个SelectedIndexChanged,SelectedIndexChanging

我想应当可以在SelectedIndexChanging这个事件中,保存当前的分页夹的table.datatable.save()

我是这样想的,但帮助里关于这个事件的用法描述很少,所以不得要领。

--  作者:lin_hailun
--  发布时间:2012/12/20 21:38:00
--  
 就按3楼的干吧。
--  作者:chnfo
--  发布时间:2012/12/20 21:53:00
--  
我是这么想的,但就是不知道咋个写法.把这段代码写在SelectedIndexChanging事件里,结果出错了图片点击可在新窗口打开查看

\'Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
\'If tab.SelectedPage IsNot Nothing Then
\'    Select Case tab.SelectedPage.Name
\'        Case "A"
\'          Tables(e.Form.Name & "_Table表1").DataTable.Save()
\'        Case "B"
\'          Tables(e.Form.Name & "_Table表2").DataTable.Save()
\'          Tables(e.Form.Name & "_Table表3").DataTable.Save()
\'        Case "C"
\'          Tables(e.Form.Name & "_Table表4").DataTable.Save()
\'          Tables(e.Form.Name & "_Table表5").DataTable.Save()
\'    End Select
\'End If


--  作者:blackzhu
--  发布时间:2012/12/21 7:25:00
--  
Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
If tab.SelectedIndex =0 Then \'如果切换到的是第一个页面
    Tables(e.Form.Name & "_Table表1").DataTable.Save()
End If
If tab.SelectedIndex = 1 Then \'如果切换到的是第二个页面
    Tables(e.Form.Name & "_Table表2").DataTable.Save()
    Tables(e.Form.Name & "_Table表3").DataTable.Save()
End If
If tab.SelectedIndex = 2 Then \'如果切换到的是第三个页面
    Tables(e.Form.Name & "_Table表4").DataTable.Save()
    Tables(e.Form.Name & "_Table表5").DataTable.Save()
End If
[此贴子已经被作者于2012-12-21 7:25:42编辑过]

--  作者:lin_hailun
--  发布时间:2012/12/21 9:06:00
--  
 可以参考下。

http://www.foxtable.com/help/topics/0876.htm

--  作者:chnfo
--  发布时间:2012/12/21 12:53:00
--  
我想你理解错我的意思了。
Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
If tab.SelectedIndex =0 Then \'如果切换到的是第一个页面
    Tables(e.Form.Name & "_Table表1").DataTable.Save()   
End If


 ——————Table表1本身就是SelectedIndex =0这个分页夹里显示的,我希望做到的是当离开SelectedIndex =0的时候,Tables(e.Form.Name & "_Table表1").DataTable得到保存,而不是说当切换到SelectedIndex =0的时候,表1得到保存

也就是说,我希望做到的是离开A分页夹,在A分页夹的界面上显示的表.datatable得到保存。
意即:
离开分页夹A ,表1.datatable得到保存
离开分页夹B,表2.datatable、表3.datatable得到保存
离开分页夹C,表4.datatable、表5.datatable得到保存

只有这样,才有可能使这个分页夹里的表中添加或修改的数据被其它地方引用。


我想我应当试一下反过来想

Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
If tab.SelectedIndex <>0 Then \'如果切换到的不是第一个页面
    Tables(e.Form.Name & "_Table表1").DataTable.Save()   
End If


但这样做有一个明显的问题,多人同时操作的时候,本人操作的数据会“被保存”
[此贴子已经被作者于2012-12-21 13:00:09编辑过]

--  作者:blackzhu
--  发布时间:2012/12/21 13:06:00
--  
哎 给一个方式而已 你自己想想  你想离开这个页面就保存  有了这个方法随便你怎么做都可以了呀.
--  作者:blackzhu
--  发布时间:2012/12/21 13:11:00
--  
你切换时  直接datatables.Save  保存全部表