Foxtable(狐表)用户栏目专家坐堂 → 早期版本的复选框问题


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

主题:早期版本的复选框问题

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


加好友 发短信
等级:二尾狐 帖子:588 积分:4838 威望:0 精华:0 注册:2015/11/22 10:28:00
早期版本的复选框问题  发帖心情 Post By:2023/5/30 14:47:00 [显示全部帖子]

我一直用的2018版,有个bug
开启table的复选后,全选、反选不能精确的选择全部或者反选,

我写的全选代码如下,偶尔会有记录漏选的情况:
Dim t As Table = Tables(e.Form.name & "_明细表")
For i As Integer = t.Rows.Count -1 To 0 Step -1
    t.Rows(i).Checked  = True
Next

反选:
Dim t As Table = Tables(e.Form.name & "_明细表")
For i As Integer = t.Rows.Count -1 To 0 Step -1
    t.rows(i).Checked  = not t.rows(i).Checked
Next
t.Current.Checked  = not t.Current.Checked   '因为发现反选时,焦点所在行不能反选,就加了这句

2022版已经没这个问题了,但不想升级,用不惯代码编辑器;
动态添加一个复选框的做法我会,但在实现勾选后自动计算勾选记录的金额合计值会很慢,
因为datacolchanged事件里写了计算勾选记录合计金额的代码,全选或反选后,会反复触发这个事件,很慢。

想问问,有没有其他代码可以完整的实现复选框的全选、反选功能?

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


加好友 发短信
等级:二尾狐 帖子:588 积分:4838 威望:0 精华:0 注册:2015/11/22 10:28:00
  发帖心情 Post By:2023/5/30 15:11:00 [显示全部帖子]

我要复选框的原因是想实现勾选部分记录后能做批量操作(审核、删除等)

因为系统自带的底部合计栏只能显示所有可见记录的合计值,

因此想知道勾选记录的合计值的话只能自己写代码,

我动态添加了一个“选”的布尔值的列,在datacolchanged事件写代码:

Dim tol As Double = 0
Select Case e.DataCol.name
    Case "选"
        If e.DataRow("选") = True Then
            tol+=e.DataRow("金额")
        End If
End Select
e.Form.Controls("合计金额").text=tol

 

这段代码,若是一行行的勾选,问题不大,但若用一楼的全选、反选,则会反复触发这个事件,就很慢。

这段代码能优化不,比如不让反复计算,等所有行都全选/反选结束后再计算合计值。

 


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


加好友 发短信
等级:二尾狐 帖子:588 积分:4838 威望:0 精华:0 注册:2015/11/22 10:28:00
  发帖心情 Post By:2023/5/30 18:28:00 [显示全部帖子]

Position  + SystemReady=False 好用,

谢谢楼上2位。


 回到顶部