回 帖 发 新 帖 刷新版面

主题:grid排序

请问怎样做到按grid表头的某一列,使该列升序降序原始记录循环变化呢?

回复列表 (共4个回复)

沙发

http://bbs.bccn.net/viewthread.php?tid=245879&extra=&highlight=%B5%E3%BB%F7%B1%ED%CD%B7%C5%C5%D0%F2&page=1

这里有一个实例,可参考。

板凳

用一个变量来记住该列的排序状态,例如X=1、2、3,三种状态,然后排序:
INDEX ON 字段名 tag myindx DESCE &&降序
INDEX ON 字段名 tag myindx ASCE  &&升序
INDEX ON .t. tag myindx &&原序 

3 楼

问题也解决,请到编程论坛去看一看。

4 楼

今天为了实现这个点头排序,找到了这一贴,借用了转贴的几个关键字,简洁一下代码如下:
我用的是可读写的临时表,方便快速显示.
更新数据的时候需要再绑定一次,因为列数会有改变.

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

我来回复

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