永发信息网

如何将VFP的grid设置成点击标题排序

答案:2  悬赏:20  手机版
解决时间 2021-05-03 09:32

就是点击列标题的时候,按此字段排序

另外,不要告诉我将代码写在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 &&刷新当前表格

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大蒜发芽了还能吃吗?
我的电脑是刚配的新主机,开机启动项只有三个
苏醒的女朋友是谁
初到一个地方,皮肤就会出问题,有什么解决办
今年是第几的个七夕情人节?
超级QQ怎么取消的?
山人自有妙计出自?
csol怎样把录的视频上传到网上
上海巴比包子王地址在什么地方,想过去办事
大兴庞各庄镇南小营村通什么车
09WCG的赛程表。急求、
关于快与慢的名言
冬天应该用什么样的护肤品
在国内的A-level
怎样把泡沫之夏漫画版的图片转到我的空间?
推荐资讯
英语翻译题个
谁有这样的补丁?
wow bl中什么种族的猎人最好
爱情的感觉是什么??
清源茶业怎么去啊,有知道地址的么
关于QQ爱墙种子
红德家常饭店在哪里啊,我有事要去这个地方
深孔钻操作步骤 要详细的
ps:谁有3D文字动画制作工具
广州有没有nono族韩版服装店
宁波哪里有gateway维修点
心连心房介在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?