以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]页面底部状态栏显示统计数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=139360)

--  作者:hzpy
--  发布时间:2019/8/12 14:41:00
--  [求助]页面底部状态栏显示统计数据
求助老师们,想要向excel表一样,在狐表下底边栏显示当前窗口筛选的行数,可以吗?
就是把窗口当前绑定某一表当前所有行数,即表左侧的行数在底部显示出来
[此贴子已经被作者于2019/8/12 14:44:44编辑过]

--  作者:有点蓝
--  发布时间:2019/8/12 15:02:00
--  
帮助搜“statusbar”
--  作者:hzpy
--  发布时间:2019/8/12 15:50:00
--  

哦,我想通过表PositionChanged事件实现,简单一些,写入代码:

If e.Table.Current Is Nothing Then

    StatusBar.Message1 = "" & e.Table.Rows.Count & ""

Else

    StatusBar.Message1 = "" & (e.Table.Position + 1) & "," & e.Table.Rows.Count & ""

End If

 

能够实现,但是筛选显示是会出错

有时候点表中的行才会显示,有时候不需要点击也能显示,有时候点击了显示的行是错误的

 

 

筛选TopicBarTopicLinkClick代码如下:
Select Case e.Link.Text

 Case "全区在职村干部"

        Tables("村干部基本信息").Filter = "[转为退职] = False"

        Tables("村干部基本信息").Sort = "排序"

    Case "退职村干部"

        Tables("村干部基本信息").Filter = "[转为退职] = True"

        Tables("村干部基本信息").Sort = "排序"

    Case "村书记"

        Tables("村干部基本信息").Filter = "[职务排序] In (\'00\',\'01\') and [转为退职] = \'False\'"

        Tables("村干部基本信息").Sort = "排序"

    Case "村主任"

        Tables("村干部基本信息").Filter = "[职务排序] = 02 and [转为退职] = \'False\'"

        Tables("村干部基本信息").Sort = "排序"

    Case "村书记兼主任"

        Tables("村干部基本信息").Filter = "[职务排序] = 00 and [转为退职] = \'False\'"

        Tables("村干部基本信息").Sort = "排序"

End Select

 

请老师指导

[此贴子已经被作者于2019/8/12 15:50:54编辑过]

--  作者:有点蓝
--  发布时间:2019/8/12 16:02:00
--  
我测试没有问题,上传实例说明
--  作者:hzpy
--  发布时间:2019/8/12 16:28:00
--  
请老师查看实例,
进入窗口点击“村干部信息表”后,筛选有关数据,状态栏显示出现的问题有:
1、无论筛选那个类别,都要点击第二行后,状态栏数据才会发生变化;
2、如果数据行只有一行,怎么点数据都不会刷新。如:筛选村书记兼主任类,表只有一行,上次的数据在状态栏不会改变。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:村干部信息系统.table


--  作者:有点蓝
--  发布时间:2019/8/12 16:38:00
--  

使用Message2 


If e.Table.Current Is Nothing Then

    StatusBar.Message2 = "" & e.Table.Rows.Count & ""

Else

    StatusBar.Message2 = "" & (e.Table.Position + 1) & "," & e.Table.Rows.Count & ""

End If


如果要使用Message1 ,这样处理一下


StatusBar.DefaultMessage = ""

If e.Table.Current Is Nothing Then

    StatusBar.Message1 = "共" & e.Table.Rows.Count & "行"

Else

    StatusBar.Message1 = "第" & (e.Table.Position + 1) & "行,共" & e.Table.Rows.Count & "行"

End If


--  作者:hzpy
--  发布时间:2019/8/12 16:44:00
--  
两种方法都不行,问题依旧,PositionChanged事件看来不能实现
--  作者:有点蓝
--  发布时间:2019/8/12 16:46:00
--  
我测试没有问题。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:村干部信息系统.zip


--  作者:hzpy
--  发布时间:2019/8/12 16:50:00
--  
有问题哦,您点击村书记兼主任进行筛选,然后在点击其他任一个进行筛选试试看呢,只有再次点击表第二行以下的其他行,才会刷新数据
--  作者:有点蓝
--  发布时间:2019/8/12 17:05:00
--  
正常因为在项目刚刚打开的时候,并不会触发PositionChanged事件,而做筛选,由于表格一直选择的第一行,Position也没有变化,所以也不会触发事件。要么把代码改放到currentchanged,或者发一份到afteropenproject事件