主题:grid排序
zhengxinhai
[专家分:30] 发布于 2010-02-19 16:31:00
请问怎样做到按grid表头的某一列,使该列升序降序原始记录循环变化呢?
回复列表 (共4个回复)
沙发
wzxc [专家分:9440] 发布于 2010-02-19 20:32:00
http://bbs.bccn.net/viewthread.php?tid=245879&extra=&highlight=%B5%E3%BB%F7%B1%ED%CD%B7%C5%C5%D0%F2&page=1
这里有一个实例,可参考。
板凳
qjbzjp [专家分:8830] 发布于 2010-02-20 11:33:00
用一个变量来记住该列的排序状态,例如X=1、2、3,三种状态,然后排序:
INDEX ON 字段名 tag myindx DESCE &&降序
INDEX ON 字段名 tag myindx ASCE &&升序
INDEX ON .t. tag myindx &&原序
3 楼
zhengxinhai [专家分:30] 发布于 2010-02-20 16:30:00
问题也解决,请到编程论坛去看一看。
4 楼
moz [专家分:37620] 发布于 2011-02-04 21:56:00
今天为了实现这个点头排序,找到了这一贴,借用了转贴的几个关键字,简洁一下代码如下:
我用的是可读写的临时表,方便快速显示.
更新数据的时候需要再绑定一次,因为列数会有改变.
DEFINE CLASS grid001 as Grid
RecordsourceType=1
Recordsource="tmp1"
Tag01=.T.
PROCEDURE bindclick()
LOCAL T1
For Each T1 In This.Columns
Bindevent(T1.Controls(1),"Click",This,"grhClick")
Endfor
ENDPROC
PROCEDURE grhClick()
LOCAL T1(1),T2
Aevents(T1,0)
T2=T1(1,1).parent.columnorder
this.RecordSource=""
T2="SELECT * FROM tmp1 ORDER BY "+ALLTRIM(STR(T2))+IIF(this.tag01," ASC "," DESC ")+"INTO CURSOR tmp1 READWRITE"
EXECSCRIPT(T2)
this.Tag01=!this.Tag01
this.RecordSource="tmp1"
this.bindclick
ENDPROC
ENDDEFINE
我来回复