回 帖 发 新 帖 刷新版面

主题:关于表格控件中数据的排序

怎么可以使表格控件中的数据按所单击的列标头排序(即当单击某列的列标头时,表格中的数据按该列数据进行排序)。现在的问题是用什么事件去触发那段程序最好。
注:我不想用每列的HEADER1的CLICK事件触发,因为我的表格每次运行时的列数都可能不同。

回复列表 (共20个回复)

11 楼


6楼专家,您好
   您的代码我试过了,如果用数据库下的表,在vfp中点运行是可以实现的,但连编成EXE后出现“不能更新临时表”的错误提示。
   经测试,如果是自由表的话就没有问题了。
   为什么?
   有没有什么办法补救?

12 楼

怎么没有专家给解决一下啊!!!!

13 楼

临时表需要加入 readwrite 关键字

14 楼

我是初学者
麻烦请高手详细说明在哪个位置(句)处做怎样的修改,非常感谢!

15 楼


如果点击某一列而不是标头,那么在AfterRowColChange中这样是否方便一点呢:
LPARAMETERS nColIndex
n=STR(nColIndex)
This.RecordSourceType= 4
This.ColumnCount=-1
This.RecordSource="select * from &cfile order by &n into cursor SYS(2015) "
This.Refresh

16 楼

我想请教一下 DJ
点击标头的事件写到哪里去?
我怎么在设计时找不着北?

17 楼

[quote]我想请教一下 DJ
点击标头的事件写到哪里去?
我怎么在设计时找不着北?[/quote]
moz老师,刚看到您的帖子.我试验了一下:
当Grid的ColumnCount=-1时,找不到表格中的Column对象,更没有Header和Text了.所以要先设置好Grid的数据源后,在属性窗口中可以找到某一列的Header,它有Click事件.
另外,如果设空表格的ColumnCount=1,然后写Header的Click事件代码,当在程序中把数据源定义到表格后,Header.Click事件代码不被执行.
其他的奥妙不清楚.
我在关注网友们的高招.

18 楼

果然是年轻有为,我看好你.

19 楼

学习中,好贴

20 楼

各位大侠的方法是好用,

我这里有一种,供参考:

&&将以下放入grid1的init事件中
FOR i=1 TO thisform.grid1.ColumnCount
thisform.grid1.Columns(i).Header1.caption='   '
thisform.grid1.Columns(i).visible=.f.
ENDFOR 
this.RecordSource=''
SELECT form_data_kccl &&表名
ls=IIF(fcount()>thisform.grid1.ColumnCount,thisform.grid1.ColumnCount,fcount())
FOR i=1 TO ls
thisform.grid1.Columns(i).Header1.caption=FIELD(i)
thisform.grid1.Columns(i).visible=.t.
ENDFOR 
thisform.Refresh 

&&&&将以下放入一个标签Label1,同时设置他的visible=.f.
lpara px
thisform.grid1.RecordSource=""
selecthar="select * from form_data_kccl ORDER BY "+cSQL+" INTO CURSOR form_data_kccl READWRITE "
&selecthar
thisform.grid1.init

&&&&&&&&&以下放入每一个列标头的click 事件里
IF LEN(ALLTRIM(this.Caption))>0
   THISFORM.Label1.Click(this.Caption)
ENDIF 

&&&&&&&&&&&&&&这方法直观,初学者看简单点 
&&&&&&&&&&77注意,你的grid1的列数一定要够,但这个简单,你可以在属性里设置为50

我来回复

您尚未登录,请登录后再回复。点此登录或注册