就是点击列标题的时候,按此字段排序
另外,不要告诉我将代码写在grid的header里,因为表格的数据源可能是变动的,没有绑定数据源,也就是说在运行中列标题会改变。
就是点击列标题的时候,按此字段排序
另外,不要告诉我将代码写在grid的header里,因为表格的数据源可能是变动的,没有绑定数据源,也就是说在运行中列标题会改变。
首先在表单中新建一个方法,命名为:headerclick
写入如下代码:
=AEVENT(aSourceObj, 0)
oSourceObj = aSourceObj[1]
cRowName=osourceobj.CAPTION
cgrid='thisform.grid1' &&&&表格的名字
ogrid=&cgrid
cfilename=ogrid.RECORDSOURCE
IF EMPTY(cfilename) OR SELECt(cfilename)=0
RETURN
ENDIF
ogrid.RECORDSOURCE=''
SELECT * FROM (cfilename) INTO CURSOR (cfilename+'_tmp')
USE IN (cfilename)
SELECt * FROM (cfilename+'_tmp') ORDER BY &crowname INTO DBF (cfilename)
USE IN (cfilename+'_tmp')
ogrid.RECORDSOURCE=cfilename
SELECT(cfilename)
GOTO TOP
ogrid.SETFOCUS
然后在表格的refresh(刷新方法)里写入如下代码:
cgrid='thisform.'+ALLTRIm(this.name)
ogrid=&cgrid
FOR gnCount = 1 TO this.columncount && header代理
cheader='this.column'+alltrim(str(gncount))+'.header1'
oheader=&cheader
oheader.tooltiptext='单击按本列值重新排序表格数据'
BINDEVENT(oheader,"Click",thisform,"headerclick")
NEXT
当表格装载数据后,刷新表格(运行方法thisform.grid1.refresh),即可将表格中header的click事件设置为自定义方法的代理。当单击表格header时,即运行headerclick自定义方法,将表格数据源表重新排格
给你个简单的。这个关建在知道当前是那个表的那个字段。
在每个要排序的header里写上这样的:
PX=ALLT(THIS.PARENT.CONTROLSOURCE) &&读取当前所点列的表和字段名 SM=AT(".",PX) PX1=SUBST(PX,1,SM-1) &&当前表名 PX2=SUBST(PX,SM+1) &&当前字段名 THISFORM.TEXT1.VALUE=PX1 &&这个是显示当前的表名 THISFORM.TEXT2.VALUE=PX2 &&这个是显示当前的字段名 以上是重点 SELE &PX1 &&转到表 INDEX ON &PX2 TO TEMP &&排序 GO TOP &&到第一个记录 THISFORM.GRID1.REFRESH &&刷新当前表格