如何多选中记录?

一个表单上有GRID1,想一次同时选中多条记录如何编码。
1、如何表示这条记录被选中?
2、连续选中多条记录?
---------------------------------------------------------------

请参考:
一、如果GRID1表中记录不是太多(事实上,根据C-S模式,GRID1中一般不会有多少数据)
1、可以先创建一个临时表,这个临时表比原表多一个逻辑型字段FLDlSelected。
2、在GRID中增加类型为CHECKBOX的列COLUMN1,它的数据源就是字段FLDlSelected。
3、COLUMN1的属性SPARSE=.F.,COLUMN1下的CHECKBOX1的属性BACKSTYLE=0(透明)。
4、根据FLDlSelected的值可以判断用户选择了哪些数据。

二、在外部建立临时表,记录GRID1中所选择的记录号RECN(),根据临时表来判断用户所选择的数据。
当然在GRID1中必须在BeforeRowColChange、AfterRowColChange中写代码来突出效果。

---------------------------------------------------------------

要达到这种目的也不复杂,为表增加一个字段:SEL,逻辑型,在表格初始化时:
repl all sel with .f.

设置表格所有的列中的文本框的CLICK事件为:

repl sel with !sel

设置表格所有的列的dynamicbackcolor属性为:

iif(sel,高亮颜色对,正常颜色对)

设两个按钮,

全选:repl all sel with .t.
全消:repl all sel with .f.

以上操作没有考虑工作区,要保证所要操作的表在当前工作区

要想获得所选的记录:
sele 源表
copy to 目标表 for sel

---------------------------------------------------------------
还有一种方法,不过不太建议使用,用DELE命令,易造成数据意外损坏

设置表格的DELETEMARK为.t.

表格初始化:

reca all
set dele off

设置表格所有的列的dynamicbackcolor属性为:

iif(deleted(),高亮颜色对,正常颜色对)

设两个按钮,

全选:dele all
全消:reca all

以上操作没有考虑工作区,要保证所要操作的表在当前工作区

要想获得所选的记录:
sele 源表
copy to 目标表 for deleted()

清理代码:
reca all

为保证数据安全,在主程序启动时:
use 源表
reca all
use

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus