注册 登录
编程论坛 PowerBuilder

数据窗口中的问题

jolly520 发布于 2006-07-21 10:01, 896 次点击
为什么我在数据窗口中点击后面的那些行时, 会立即跳到刚打开时显示的那几行中呢?
而选中的是对的,但显示的是错的呢?
辛苦大家了。
7 回复
#2
lbh76262006-07-21 10:35
是不是要用dw_1.scrolltorow(dw_1.getrow())
#3
fgypblt2006-07-21 17:43
有相应代码,当然跳转了
比如 又执行retrieve()
#4
jolly5202006-07-22 09:28

谢谢两位了哦。
我的代码是:在dw_1的clicked事件中写的。

l_getr=this.GetClickedRow() //得到当前行

if row>0 then
dw_1.scrolltorow( l_getr ) //显示行数据

sle_id.text=dw_1.getitemstring( l_getr , 1 )
sle_name.text=dw_1.getitemstring( l_getr , 2 )
ddlb_sex.text=dw_1.getitemstring( l_getr , 3 )
sle_addr.text=dw_1.getitemstring( l_getr , 4 )
sle_tel.text=dw_1.getitemstring( l_getr , 5 )
sle_sfz.text=dw_1.getitemstring( l_getr , 6 )
sle_bm.text=dw_1.getitemstring( l_getr , 7 )
sle_zw.text=dw_1.getitemstring( l_getr , 8 )

dw_1.retrieve( )

dw_1.selectrow( 0 , false)
dw_1.selectrow( l_getr , true)
end if

代码没问题,但是点击时数据窗口中的数据老是跳到第一页中,而不会出现在第一页中

只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2006-7-22 9:43:47编辑过]

#5
潇洒老乌龟2006-07-22 11:29
在数据窗口的rowfocuschanged事件中写:
if currentrow > 0 and currentrow<= this.rowchount() then

sle_id.text=dw_1.getitemstring( currentrow, 1 )
sle_name.text=dw_1.getitemstring( currentrow , 2 )
ddlb_sex.text=dw_1.getitemstring( currentrow , 3 )
sle_addr.text=dw_1.getitemstring( currentrow , 4 )
sle_tel.text=dw_1.getitemstring( currentrow , 5 )
sle_sfz.text=dw_1.getitemstring( currentrow , 6 )
sle_bm.text=dw_1.getitemstring( currentrow , 7 )
sle_zw.text=dw_1.getitemstring( currentrow , 8 )


end if
#6
jolly5202006-07-22 13:33

谢谢楼上的帮我哦。
请问那个?currentrow是什么意思呢?我还不怎么明白.

#7
ヤ順祺冄繎ヤ2006-07-23 15:40
getrow(),currentrow()的区别
----------
currentrow()是一个PAINTER  FUNCTION,即画板函数,是在如DW的属性中使用,或者是在计算列的EXPRESSION中使用的,具体可参见PB帮助;  
其表示获取DW的当前行行号!  
 
getrow()确实有两种用法,一种是当作PAINTER  FUNCTION,表示获取处理行的行号;另一种用法是当作SCRIPT  FUNCTION,表示获取当前行行号,此时与CURRENTROW()作用一样;  
 
关于二者都做PAINTER  FUNCTION的区别见下:  
 
The  expression  results  in  an  arrow  displaying  in  the  current  row  and  no  arrow  displaying  in  other  rows.  
 
¨            A  computed  field  using  the  If,  CurrentRow,  and  GetRow  functions:  
 
If(CurrentRow()  =  GetRow(),"Current","Not  current")  
 
which  displays  the  word  "Current"  when  the  row  is  the  current  row  and  "Not  current"  for  all  other  rows  
 
¨            A  computed  field  (typed  on  one  line)  using  the  Bitmap,  CurrentRow,  and  GetRow  functions:  
 
Bitmap(If(CurrentRow()=GetRow(),  "c:\pb5i32\ex\code\indicatr.bmp",  "  "))  
#8
fgypblt2006-07-24 17:25
呵呵,写代码那是各人有个人风格。
如三楼所述,你将
dw_1.scrolltorow( l_getr ) //显示行数据
放于dw_1.retrieve() 后面位置即可
1