注册 登录
编程论坛 VFP论坛

Grid绑定带索引的表时,如何设置一列显示行号

shizi0 发布于 2024-12-07 15:56, 1626 次点击
一直以来,当grid需要行号时,我都避免用索引,Column1.ControlSource="recon()"即可.
但难免有需要用索引的,尝试Column1.ControlSource="Grid.ActiveRow",当表格滚动或失去焦点时就会每行显示0。
请教各位大侠,有什么好招处理这种情况?
10 回复
#2
星光悠蓝2024-12-07 16:29
我喜欢用视图或查询的游标
#3
wcx_cc2024-12-07 16:47
不取GRID的,取数据源表的是否可以?但是最好别取recno(),用添加1个专用列替代recno()值
#4
laowan0012024-12-07 17:26
行号可用单独的一列显示
看楼主的意思,行号是表格的物理行号,也就是记录号
如果要求的是逻辑行号的话,那就需要人为管理了



[此贴子已经被作者于2024-12-7 17:30编辑过]

#5
shizi02024-12-07 18:09
一个思路是索引的顺序号,但如何快速求得索引顺序号?
另一个思路是每行行号=Grid.ActiveRow,但表格失去焦点或滚动时,ActiveRow不起作用了。我尝试过Dynamic...,不知道怎么写。
#6
shizi02024-12-08 09:27
测试如下方法基本可行,但滚屏显示上还不太理想
Grid.Init:
Column1.ControlSource=[Thisform.]+Strextract(Juststem(Program()),[.])+[.ActiveRow]
Grid.Scrolled:
LPARAMETERS nDirection
This.SetFocus
Dodefault(nDirection)



[此贴子已经被作者于2024-12-8 09:56编辑过]

#7
sdta2024-12-08 10:50
表中增加一个字段用于保存索引的物理序号,当表索引后,添加这个物理序号
#8
shizi02024-12-08 15:09
以下是引用sdta在2024-12-8 10:50:38的发言:

表中增加一个字段用于保存索引的物理序号,当表索引后,添加这个物理序号

索引的物理序号怎么取得?不用遍历吧,而且建立索引后有可能增删记录、修改索引字段的值

[此贴子已经被作者于2024-12-8 15:40编辑过]

#9
星光悠蓝2024-12-08 20:05
用SELECT语句生成一个临时表了操作,是不是更容易点,为什么要直接操作源表呢
#10
shizi02024-12-08 22:15
以下是引用星光悠蓝在2024-12-8 20:05:27的发言:

用SELECT语句生成一个临时表了操作,是不是更容易点,为什么要直接操作源表呢


Grid绑定的是临时表,从不对源表直接操作。
好像前面没说过是操作源表吧,可能我需求描述不清楚?跟什么表无关,而实际上基本肯定是Cursor,但不是select...order by ...的顺序能解决问题的,要依靠vfp对临时表的索引排序来填充Grid。这是这个问题的前提。
需求例子1:给自己写的一个通用表格类加点功能,可以指定要不要行号,索引是肯定有的,点击表头会排序,可以增删行数据,......
需求例子2:Grid.ControlSource=Cursor1,而Cursor1部分数据来源于历史记录(可以order by),部分来源于操作过程中从别处动态刷新计算得来,二者需要一起排序,提供给操作者其他操作......
现在的问题是:要显示Grid每行的行号,像excel一样,Corsor是有索引的,行号≠Recno();好像也没办法快速获取某记录的当前索引顺序号,行号=索引的顺序号。

[此贴子已经被作者于2024-12-8 22:27编辑过]

#11
easyppt2024-12-10 08:18
无解吧。

你的表头没有排序功能吗,排序后,依然会错乱。

初始添加单独 序号列,即可,
用自己单击表头排序时,这个序号,我一般不再处理,因为觉得也没必要,有个初始序号足够。
1