Foxtable(狐表)用户栏目专家坐堂 → 如何实现页数变化后,开始页码默认从1开始,计算出开始页码与结束页码。


  共有3191人关注过本帖树形打印复制链接

主题:如何实现页数变化后,开始页码默认从1开始,计算出开始页码与结束页码。

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
如何实现页数变化后,开始页码默认从1开始,计算出开始页码与结束页码。  发帖心情 Post By:2023/11/14 12:52:00 [只看该作者]

有一材料表(数据参考如下:)
类别   名称    页数   开始页码  结束页码
A        A1          2            1          2
A        A2         3             3          5
A        A3         4             6         9
B        B1          5            1          5
如何实现页数变化后,开始页码默认从1开始,计算出开始页码与结束页码。
谢谢!

代码如何修正呢?以类别为主线,根据不同的类别生成不不同类别对应的开始页码与结束页码,
Dim cmd As New SQ LCommand
cmd.Conn ecti
Dim dt As DataTable
cmd.Com man dText = "SELE CT * From {目录表}"
dt = cmd.ExecuteReader()
Dim dr As DataRow
Dim drs As List(Of DataRow)
dr = dt.Find("类别 =‘“&values(“类别”)&”’ and [_SortKey] < " & e.DataRow("_SortKey"), "[SortKey] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    dr("开始页码") = 1
    dr = e.DataRow
Else
    dr("开始页码") = dr("结束页码") + 1
End If
drs = dt.S elect("类别 =‘“&values(“类别”)&”’ and [_SortKey] >= " & dr("_SortKey"), "[SortKey]")
For i As Integer = 1 To drs.Count - 1 '
    drs(i)("开始页码") = drs(i - 1)("结束页码") + 1
Next

If e.DataRow.IsNull("开始页码") Then
    dr("结束页码") = Nothing
Else
    dr("结束页码") = dr("开始页码") + dr("结束页码") - 1
End If
dt.Save()
[此贴子已经被作者于2023/11/14 13:08:40编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/14 13:43:00 [只看该作者]

If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    dr = e.DataRow
    dr("开始页码") = 1
Else
    dr("开始页码") = dr("结束页码") + 1
End If

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)If dr Is Nothing Then '如果没有找到...  发帖心情 Post By:2023/11/14 15:32:00 [只看该作者]

老师 红色部分会报错   这个有没有办法直接弄成狐表内部函数呢?
比如函数名yemajisuan  下面的代码要怎么修改使它能够直接在函数里面就更新完毕呢?默认以类别为分组,根据输入的页数直接计算出开始和结束页码
Dim cmd As New SQLCommand
cmd.Co nne ctio nN ame = "主数据源"
Dim dt As DataTable
cmd.Comma ndText = "S ELE CT * From {目录表}"
dt = cmd.ExecuteReader()
Dim dr As DataRow
Dim drs As List(Of DataRow)
dr = dt.Find("类别 ='" & values("类别") & "' and [_SortKey] < " & e.DataRow("_SortKey"), "[SortKey] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    dr = e.DataRow
    dr("开始页码") = 1
Else
    dr("开始页码") = dr("结束页码") + 1
End If
drs = dt.Sel ect("类别 ='" & values("类别") & "' and [_SortKey] >= " & dr("_SortKey"), "[SortKey]")
For i As Integer = 1 To drs.Count - 1 '
    drs(i)("开始页码") = drs(i - 1)("结束页码") + 1
Next

If e.DataRow.IsNull("开始页码") Then
    dr("结束页码") = Nothing
Else
    dr("结束页码") = dr("开始页码") + dr("结束页码") - 1
End If
dt.Save()

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/14 15:37:00 [只看该作者]

先看看:http://www.foxtable.com/webhelp/topics/0604.htm

代码放在哪里的?如果不是表事件,是不会有e.DataRow这种东西的

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)先看看:http://www.foxtable.com/we...  发帖心情 Post By:2023/11/14 18:03:00 [只看该作者]

老师 是放在内部函数里面的  怎么修正呢?没有达到预期    是想直接在内部函数就定义好
然后通过直接调用函数Functions.Execute("mukuyema")就自动计算,仅传参类别值进来。

图片点击可在新窗口打开查看此主题相关图片如下:屏幕截图 2023-11-14 175829.png
图片点击可在新窗口打开查看

Dim dr As DataRow = Args(0)
Dim e As RequestEventArgs = Args(1)

Dim cmd As New SQLCommand
cmd.Conn ection Name = "主数据源"
Dim dt As DataTable
cmd.CommandText = "SE LE  CT * From {目录表}"
dt = cmd.ExecuteReader() 

Dim drs As List(Of DataRow)
dr = dt.Find("类别 ='" & e.values("类别") & "' and [_SortKey] < " & dr("_SortKey"), "[SortKey] Desc") '找出上一行
If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
    dr = dr
    dr("开始页码") = 1
Else
    dr("开始页码") = dr("结束页码") + 1
End If
drs = dt.S el ect("类别 ='" & e.values("类别") & "' and [_SortKey] >= " & dr("_SortKey"), "[SortKey]")
For i As Integer = 1 To drs.Count - 1 '
    drs(i)("开始页码") = drs(i - 1)("结束页码") + 1
Next

If dr.IsNull("开始页码") Then
    dr("结束页码") = Nothing
Else
    dr("结束页码") = dr("开始页码") + dr("结束页码") - 1
End If
dt.Save()

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/14 20:13:00 [只看该作者]

在什么事件调用这个函数的?

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)在什么事件调用这个函数的?  发帖心情 Post By:2023/11/15 10:26:00 [只看该作者]

想在按钮事件中直接触发并调用这个函数  Functions.Execute("mukuyema",“A”)

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/15 10:43:00 [只看该作者]

建议还是认真看看这个帮助:http://www.foxtable.com/webhelp/topics/0604.htm,按钮的e参数只有:http://www.foxtable.com/webhelp/topics/0732.htm。不要随便把a事件的参数用到b事件

另外函数的定义也要认真看看:http://www.foxtable.com/webhelp/topics/1486.htm

上面代码定义了2个参数:
Dim dr As DataRow = Args(0) 第一个参数是一个DataRow 
Dim e As RequestEventArgs = Args(1) 第二个参数是RequestEventArgs ,RequestEventArgs 只有httprequest事件才有,其它事件表格表格按钮都不可能有的,所以如果这个函数是在按钮里使用,也算是乱用。

如果要在按钮里使用这个函数,必须去掉函数里的第二个参数,然后按钮大概可以这样调用
Functions.Execute("mukuyema",tables(xxx).current.datarow)

 回到顶部