以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  为什么获取选中的行,用GetCheckRows和遍历行判断r.checked的结果不一样?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=105364)

--  作者:chen3728060
--  发布时间:2017/8/17 18:10:00
--  为什么获取选中的行,用GetCheckRows和遍历行判断r.checked的结果不一样?
获取选中行,必须用
我有个表,启动了允许多选,获取选中的行,要用
for each r as row in tables("表A").GetCheckedRows
 
next
 
假如我使用下面这种:
for each r as row in tables("表A")..rows
if r.checked then

end if
next
试过偶尔获得第一行,也可能会获得所有行,也或者会多获得表中没有选中的某一行,反正很诡异
 
这是为什么呢?是不是跟表的行必须倒叙遍历删除的原理有关?或者是个bug?
[此贴子已经被作者于2017/8/17 18:13:32编辑过]

--  作者:有点甜
--  发布时间:2017/8/17 19:01:00
--  
呃....我怎么测试也没问题.....不明白你问题所在。
--  作者:chen3728060
--  发布时间:2017/8/17 21:14:00
--  回复:(有点甜)呃....我怎么测试也没问题.....不明白...

那真是奇怪了,我有2个项目,这个代码都存在不稳定性,改成getCheckrows就全部没问题。我自己注意下就好了


--  作者:chen3728060
--  发布时间:2017/8/17 21:17:00
--  回复:(有点甜)呃....我怎么测试也没问题.....不明白...

其实我完整代码是新建了一个全局变量list (of string),把符合条件的行的id存着

 

Public RowList as list (of string)

 

for each r as row in tables("表A")..rows
if r.checked then
Rowlist.add(r("第一列"))
end if
next
 
然后在别的窗口,再遍历提取这个list
 
for each s as string in RowList
     output.show(s)
next
 
然后就发现我的RowList里多了几个我没有选中的行,比较诡异
[此贴子已经被作者于2017/8/17 21:17:46编辑过]

--  作者:有点甜
--  发布时间:2017/8/17 21:48:00
--  
以下是引用chen3728060在2017/8/17 21:17:00的发言:

 

然后就发现我的RowList里多了几个我没有选中的行,比较诡异
[此贴子已经被作者于2017/8/17 21:17:46编辑过]

 

你的RowList是不是没有清空?你一直add的话肯定有问题。你应该是不小心add了值,又去掉勾选了。