以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分页只加载分页后的多余行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123562)

--  作者:cd_tdh
--  发布时间:2018/8/17 16:51:00
--  分页只加载分页后的多余行

老师,我现在分页加载如下:

With DataTables("采购申请表")
    .LoadFilter = ""
    .LoadPage = 0 \'加载第一页
    .LoadTop =  20 \'每页20行
    .LoadOver =  "申请单号"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox1").Value = 1 & "/" & .TotalPages
End  With

想修改为这样:当我每页20行,总行数50行时/3页,只显示最后面10行,不是显示最后的20行,怎么弄?


--  作者:有点蓝
--  发布时间:2018/8/17 17:04:00
--  
With DataTables("采购申请表")
    .LoadFilter = ""
    .LoadPage = .TotalPages - 1
    .LoadTop =  20 \'每页20行
    .LoadOver =  "申请单号"
    .LoadReverse = True
    .Load()
    e.Form.Controls("TextBox1").Value = 1 & "/" & .TotalPages
End  With
--  作者:cd_tdh
--  发布时间:2018/8/17 17:21:00
--  
谢谢有点蓝老师,解决了,个人觉得这样更符合加载的逻辑。
--  作者:cd_tdh
--  发布时间:2018/8/21 9:00:00
--  

老师还有个疑问,我初始加载的是最后一页,筛选后,在重置取消筛选,加载出来的是第一页呢,不是最后一页了呢?

Tables("中标统计").ApplyFilter = False


--  作者:有点蓝
--  发布时间:2018/8/21 9:05:00
--  
不可能,筛选用法不会到后台重新加载数据。肯定是触发了重新加载的代码
--  作者:cd_tdh
--  发布时间:2018/8/21 9:19:00
--  

筛选后也分页了,是触发了重新加载,现在代码是这样的,怎么修改?

Dim dt As Table = CurrentTable
dt.DataTable.LoadFilter =  iif(filter > "", "(" & filter & ") And ", "") & "(" & Functions.Execute("单表加载") & ")"
dt.DataTable.LoadPage = 0
dt.DataTable.LoadTop =  20
dt.DataTable.Load()
e.Form.Controls("TextBox1").Value = 1 & "/" & dt.DataTable.TotalPages

[此贴子已经被作者于2018/8/21 9:20:36编辑过]

--  作者:有点蓝
--  发布时间:2018/8/21 9:27:00
--  
用法完全一样啊,看2楼
--  作者:cd_tdh
--  发布时间:2018/8/21 9:33:00
--  
以下是引用有点蓝在2018/8/21 9:27:00的发言:
用法完全一样啊,看2楼

With CurrentTable.DataTable
    .LoadFilter =  iif(filter > "", "(" & filter & ") And ", "") & "(" & Functions.Execute("单表加载") & ")"
    .LoadPage = .TotalPages - 1
    .LoadTop =  20
    .Load()
    e.Form.Controls("TextBox1").Value = (.LoadPage + 1) & "/" & .TotalPages
End  With

红色代码位置就只能这样改成这样,先显示最后一页呢?

 

按照帮助,最后一页显示为1,上一页,下一页代码怎么修改?

e.Form.Controls("TextBox1").Value = 1 & "/" & .TotalPages

 

上一页

With DataTables("中标统计")
    If .LoadPage > 0  Then
        .LoadPage = .LoadPage - 1
        .Load()
        e.Form.Controls("TextBox1").Value = (.LoadPage + 1) & "/" & .TotalPages
    End If
End With

下一页

With DataTables("中标统计")
    If .LoadPage < .TotalPages - 1 Then
        .LoadPage = .LoadPage + 1
        .Load()
        e.Form.Controls("TextBox1").Value = (.LoadPage + 1) & "/" & .TotalPages
    End If
End With

 


--  作者:有点蓝
--  发布时间:2018/8/21 9:40:00
--  
不用改的。这个代码有什么问题?
--  作者:cd_tdh
--  发布时间:2018/8/21 9:52:00
--  

目前加载出来结果是24/24,上一页,下一页没问题,

想加载出来是1/24的效果,现在点上一页出来结果就是23/24,2224......,点下一页没反应,一直是1/24

With CurrentTable.DataTable
    .LoadFilter =  iif(filter > "", "(" & filter & ") And ", "") & "(" & Functions.Execute("单表加载") & ")"
    .LoadPage = .TotalPages - 1
    .LoadTop =  20
    .Load()
    e.Form.Controls("TextBox1").Value = 1 "/" & .TotalPages
End  With

[此贴子已经被作者于2018/8/21 9:52:53编辑过]